我编写了一个功能规范,用于在用户注册时进行测试。我已经有了它的工作,但我觉得期待块很奇怪。
feature 'Visitor signs up' do
scenario 'with a valid email and password' do
visit new_account_path
fill_in_account_fields
fill_in_user_fields('valid@example.com', 'foobar123')
expect{click_button 'Sign up'}.to change{Account.count}.by(1) and
change{User.count}.by(1)
end
end
特别是:
expect{click_button 'Sign up'}.to change{Account.count}.by(1) and
change{User.count}.by(1)
有更好的方法吗?你认为我是以正确的方式接近这个吗?
答案 0 :(得分:1)
嗯,我不知道这件事。由于这是一个集成测试,我只想把用户看到的内容。例如,我把`expect(page).to have_content(" Hello user")。然后,您可以对将User.count更改为1的控制器或模型进行单元测试。
您想要进行从外到内的测试。使用集成测试测试功能(模拟用户填写内容和点击),同时使用单元测试测试Web应用程序。
scenario 'with a valid email and password' do
visit new_account_path
fill_in_account_fields
fill_in_user_fields('valid@example.com', 'foobar123')
click_button 'Sign Up'
expect(page).to have_content 'Hi Guy'
end
检查这些。 Everyday Rails的书值得每一分钱。
http://everydayrails.com/2014/01/15/outside-in-example-ruby-tapas.html
这是演讲中的截屏视频: