throw_symbol
匹配器
throw_symbol
匹配器用于指定代码块抛出符号。最基本的形式如果抛出任何符号则通过
expect { throw :foo }.to throw_symbol
你通常想要指定抛出特定符号
expect { throw :foo }.to throw_symbol(:foo)
如果你关心传递给 throw 的附加参数,你也可以指定它
expect { throw :foo, 7 }.to throw_symbol(:foo, 7)
基本用法
给定一个名为“throw_symbol_matcher_spec.rb”的文件,其中包含
RSpec.describe "throw" do
specify { expect { throw :foo }.to throw_symbol }
specify { expect { throw :bar, 7 }.to throw_symbol }
specify { expect { 5 + 5 }.not_to throw_symbol }
# deliberate failures
specify { expect { throw :foo }.not_to throw_symbol }
specify { expect { throw :bar, 7 }.not_to throw_symbol }
specify { expect { 5 + 5 }.to throw_symbol }
end
当我运行 rspec throw_symbol_matcher_spec.rb
那么输出应该包含所有这些
6 个示例,3 个失败 |
预期没有抛出 Symbol,得到了 :foo |
预期没有抛出 Symbol,得到了 :bar |
预期抛出 Symbol,得到了 nothing |
指定抛出的符号
给定一个名为“throw_symbol_matcher_spec.rb”的文件,其中包含
RSpec.describe "throw symbol" do
specify { expect { throw :foo }.to throw_symbol(:foo) }
specify { expect { throw :foo, 7 }.to throw_symbol(:foo) }
specify { expect { 5 + 5 }.not_to throw_symbol(:foo) }
specify { expect { throw :bar }.not_to throw_symbol(:foo) }
# deliberate failures
specify { expect { throw :foo }.not_to throw_symbol(:foo) }
specify { expect { throw :foo, 7 }.not_to throw_symbol(:foo) }
specify { expect { 5 + 5 }.to throw_symbol(:foo) }
specify { expect { throw :bar }.to throw_symbol(:foo) }
end
当我运行 rspec throw_symbol_matcher_spec.rb
那么输出应该包含所有这些
8 个示例,4 个失败 |
预期 :foo 没有被抛出,得到了 :foo |
预期 :foo 没有被抛出,得到了 :foo with 7 |
预期 :foo 被抛出,得到了 nothing |
预期 :foo 被抛出,得到了 :bar |
指定抛出的符号和参数
给定一个名为“throw_symbol_argument_matcher_spec.rb”的文件,其中包含
RSpec.describe "throw symbol with argument" do
specify { expect { throw :foo, 7 }.to throw_symbol(:foo, 7) }
specify { expect { throw :foo, 8 }.not_to throw_symbol(:foo, 7) }
specify { expect { throw :bar, 7 }.not_to throw_symbol(:foo, 7) }
specify { expect { throw :foo }.not_to throw_symbol(:foo, 7) }
# deliberate failures
specify { expect { throw :foo, 7 }.not_to throw_symbol(:foo, 7) }
specify { expect { throw :foo, 8 }.to throw_symbol(:foo, 7) }
specify { expect { throw :bar, 7 }.to throw_symbol(:foo, 7) }
specify { expect { throw :foo }.to throw_symbol(:foo, 7) }
end
当我运行 rspec throw_symbol_argument_matcher_spec.rb
那么输出应该包含所有这些
8 个示例,4 个失败 |
预期 :foo with 7 没有被抛出,得到了 :foo with 7 |
预期 :foo with 7 被抛出,得到了 :foo with 8 |
预期 :foo with 7 被抛出,得到了 :bar |
预期 :foo with 7 被抛出,得到了 :foo with no argument |