Ric*_*mas 3 rspec ruby-on-rails
例如,这两个测试:
it "fails to create given a bad player list" do
Team.new("Random name", bad_players).should raise_error
end
Run Code Online (Sandbox Code Playgroud)
和
it "fails to create given a bad player list" do
expect {Team.new("Random name", bad_players)}.to raise_error
end
Run Code Online (Sandbox Code Playgroud)
它们返回不同的输出(第一个失败,而第二个失败).根据Team模型的内容,我希望传递或失败.
完整的RSpec代码是:
require_relative 'team'
describe "Team" do
it "has a name" do
Team.new("Random name").should respond_to(:name)
end
it "has a list of players" do
Team.new("Random name").players.should be_kind_of Array
end
it "is favored if it has a celebrity on it"
it "complains if there is a bad word in the name"
context "given a bad list of players" do
let(:bad_players) { {} }
it "fails to create given a bad player list" do
expect { Team.new("Random name", bad_players) }.to raise_error
end
end
end
Run Code Online (Sandbox Code Playgroud)
我认为'应该'会起作用的原因是因为'it'中的类似语法有一个名称''test.如果事实证明'应该'是不正确的并且'期望......'是正确的,我很想知道何时使用一个与另一个.谢谢.
引自https://github.com/rspec/rspec-expectations/blob/master/Should.md:
从一开始
RSpec::Expectations提供should和should_not方法来定义任何物体上的期望.在2.11版本expect中引入了一种方法,该方法现在是定义对象期望的推荐方法.
该文件的下一段描述了实施方面的差异,为什么expect现在是推荐的方法.
在这一点上,相当多的东西,你可以用做should并且should_not是可以做到的expect.有关详细信息和用法,请参见http://rubydoc.info/gems/rspec-expectations/framesexpect.
至于您的特定代码,第一个示例失败的原因是错误发生在RSpec有机会参与之前.你仍然可以should用来检查引发错误,但你必须给RSpec一个工作的机会.语法是lambda {...}.should raise_error这里...是正在测试的代码.
| 归档时间: |
|
| 查看次数: |
1911 次 |
| 最近记录: |