您编写测试,使其失败,然后编写您的代码以使它们通过。简单......直到您决定使用 gem 而不是代码。例如,设计。
我真的不知道应该写什么集成(也就是请求或功能)规范。
如果我不写任何东西,我必须打开浏览器来检查gem与应用程序的集成是否正常,这是不好的(CFR.Ryan Bates)。此外,我可能会错误地破坏功能。
另一方面是不正确的,也没用来测试其他代码。
什么是正确的平衡?添加Devise时如何进行BDD(使用RSpec)?
非常感谢您在使用Devise时作为授权测试所写的具体示例。
如果您在应用程序中有自定义的Devise视图,您会如何回答相同的问题?
答案 0 :(得分:2)
你绝对可以使用Capybara和Rspec实现这一目标。
按照此处的说明安装capybara https://github.com/jnicklas/capybara#using-capybara-with-rspec - 提示,请确保将您指定的目录命名为features
然后只需使用capybara来测试你的应用程序
因此,为了测试您的注册,此示例应该有效,显然您需要根据应用调整参数和路由。
require 'spec_helper'
feature 'Signing up' do
scenario 'creates a new user' do
visit '/users/sign_up'
password = 'samplepassword'
fill_in 'First name', with: 'Testy'
fill_in 'Last name', with: 'McTester'
fill_in 'Email', with: 'testy@example.com'
fill_in 'Password', with: password
fill_in 'Password confirmation', with: password
click_link 'Sign up'
expect(page).to have_content 'You have signed up successfully'
end
end
Devise还有测试助手,您可以在测试应用的其他区域时使用https://github.com/plataformatec/devise#test-helpers
这些对于确保您对各个页面的任何限制都是正确的特别有用。您可以通过测试用户登录或角色错误等情况来测试此行为。
答案 1 :(得分:0)
我想出了以下几点:
恕我直言总的来说,有更多的理由来测试,而不是测试基于第三方宝石的认证系统。