所以我正在编写我的功能测试,它就是这样的,请注意[[place_holder]]
feature 'Accounts' do
scenario 'creating an account' do
# visit and fill form
expect {
click_button 'Create Account'
}.to [[place_holder]]
success_message = 'Your account has been successfully created.'
expect(page).to have_content(success_message)
end
end
现在我想以某种方式为这个块设置2个预期,这些预期是
change(User, :count).by(1)
change(Account, :count).by(1)
我有没有办法将这两个版本链接成一个,是的,我知道我可以对它的各个场景进行测试,但是代码太WET,不需要重复,并且功能规格开始很慢,不需要让我的测试套件变慢。
任何建议/替代方案都是适用的
答案 0 :(得分:2)
从rspec 3.1开始,您可以使用具有块期望的复合匹配器表达式。
expect {
click_button 'Create Account'
}.to change(User, :count).by(1).and change(Account, :count).by(1)
答案 1 :(得分:0)
由于数据可能会在每次测试运行之间被清除,您可以检查绝对值,例如
expect(User.count).to eq(1)
expect(Account.count).to eq(1)
我认为这更具可读性。