RSpec/Capybara: 设置一个不断调用的例程
RSpec/Capybara: Setting a routine constantly called
我对 rspec 和水豚的测试真的很陌生。我在我的应用程序上使用 devise 进行身份验证,我将不得不使用一个操作来登录我的大部分测试。我目前有这样的登录测试:
before do
@john = User.create!(name: "John", email: "john@example.com", password: "password")
end
scenario "with valid credentials" do
visit "/"
fill_in "Email", with: @john.email
fill_in "Password", with: @john.password
click_button "Log in"
expect(page).to have_content("Signed in successfully")
expect(page).to have_content("Welcome, #{@john.name}")
expect(page).not_to have_link("Sign up")
expect(page).to have_link("Sign out")
end
我怎么能重用那段代码,所以当我测试另一个需要用户登录的操作时,我之前用干燥器代码做了所有这些。提前致谢!
您可以使用 Warden test helpers along with FactoryBot 显着清理您的测试。由于您已经安装了 Devise,因此您需要做的就是将 Warden 测试助手添加到您的 spec/rails_helper.rb
include Warden::Test::Helpers
Warden.test_mode!
这样您就可以简单地调用...
before do
@john = FactoryBot.create(:user)
login_as(@john, :scope => :user)
end
然后简单地注销...
logout(@john)
设置用户工厂(:user
来自 FactoryBot.create(:user)
的地方很容易设置,并且可以在整个测试过程中重复使用。
安装 factory_bot_rails gem 后,您可以创建一个名为 factories 的目录和一个名为 users.rb...(spec/factories/users.rb) 的文件,并添加类似这样的内容用户属性...
FactoryBot.define do
factory :user do
first_name "John"
last_name "Doe"
email "johndoe@example.com"
password "helloworld"
password_confirmation "helloworld"
end
end
您可以设置多个用户和其他工厂...但是有大量示例,所以我不会一一列举。
注意:如果目的是测试填写表单和登录的用户流程,我会将测试保留在你的问题中。但是,对于所有其他测试,我提出的方法应该对你有用好吧,要干净得多。
我对 rspec 和水豚的测试真的很陌生。我在我的应用程序上使用 devise 进行身份验证,我将不得不使用一个操作来登录我的大部分测试。我目前有这样的登录测试:
before do
@john = User.create!(name: "John", email: "john@example.com", password: "password")
end
scenario "with valid credentials" do
visit "/"
fill_in "Email", with: @john.email
fill_in "Password", with: @john.password
click_button "Log in"
expect(page).to have_content("Signed in successfully")
expect(page).to have_content("Welcome, #{@john.name}")
expect(page).not_to have_link("Sign up")
expect(page).to have_link("Sign out")
end
我怎么能重用那段代码,所以当我测试另一个需要用户登录的操作时,我之前用干燥器代码做了所有这些。提前致谢!
您可以使用 Warden test helpers along with FactoryBot 显着清理您的测试。由于您已经安装了 Devise,因此您需要做的就是将 Warden 测试助手添加到您的 spec/rails_helper.rb
include Warden::Test::Helpers
Warden.test_mode!
这样您就可以简单地调用...
before do
@john = FactoryBot.create(:user)
login_as(@john, :scope => :user)
end
然后简单地注销...
logout(@john)
设置用户工厂(:user
来自 FactoryBot.create(:user)
的地方很容易设置,并且可以在整个测试过程中重复使用。
安装 factory_bot_rails gem 后,您可以创建一个名为 factories 的目录和一个名为 users.rb...(spec/factories/users.rb) 的文件,并添加类似这样的内容用户属性...
FactoryBot.define do
factory :user do
first_name "John"
last_name "Doe"
email "johndoe@example.com"
password "helloworld"
password_confirmation "helloworld"
end
end
您可以设置多个用户和其他工厂...但是有大量示例,所以我不会一一列举。
注意:如果目的是测试填写表单和登录的用户流程,我会将测试保留在你的问题中。但是,对于所有其他测试,我提出的方法应该对你有用好吧,要干净得多。