Capybara 集成测试对象创建
Capybara integration test object creation
我有一个使用 Capybara 的基本集成测试,问题是如果我不首先创建所需的对象,集成测试将失败。我是否需要创建所有对象作为使用 Capybara 进行集成测试的第一步?我正在使用 Rails 4.2.4
和 Capybara 2.4.3
失败
scenario 'if media content contains more than 10 items display pagination links' do
sign_in
# Object creation
11.times do
FactoryGirl.create(:media_content)
end
within '.pagination' do
expect(page).to have_content '1'
end
end
成功
scenario 'if media content contains more than 10 items display pagination links' do
# Object creation
11.times do
FactoryGirl.create(:media_content)
end
sign_in
within '.pagination' do
expect(page).to have_content '1'
end
end
如果对象创建 影响您在水豚测试中 visit
-ing 的页面,那么是的,您需要在测试元素之前创建对象在该页面上,因为在访问该页面时,其内容已被测试浏览器抓取。
我假设你有一个 visit "some_login_page"
并且在你的 sign_in
方法中成功登录后可能有一个重定向,所以当完成 sign_in
时,测试浏览器已经访问过(即抓取) 您稍后要在其上测试内容的页面。
我想到的唯一例外是,如果您使用延迟 AJAX 请求将新创建的元素从服务器动态抓取到页面 - 在这种情况下创建对象 页 visit
之后可能工作正常。
我有一个使用 Capybara 的基本集成测试,问题是如果我不首先创建所需的对象,集成测试将失败。我是否需要创建所有对象作为使用 Capybara 进行集成测试的第一步?我正在使用 Rails 4.2.4
和 Capybara 2.4.3
失败
scenario 'if media content contains more than 10 items display pagination links' do
sign_in
# Object creation
11.times do
FactoryGirl.create(:media_content)
end
within '.pagination' do
expect(page).to have_content '1'
end
end
成功
scenario 'if media content contains more than 10 items display pagination links' do
# Object creation
11.times do
FactoryGirl.create(:media_content)
end
sign_in
within '.pagination' do
expect(page).to have_content '1'
end
end
如果对象创建 影响您在水豚测试中 visit
-ing 的页面,那么是的,您需要在测试元素之前创建对象在该页面上,因为在访问该页面时,其内容已被测试浏览器抓取。
我假设你有一个 visit "some_login_page"
并且在你的 sign_in
方法中成功登录后可能有一个重定向,所以当完成 sign_in
时,测试浏览器已经访问过(即抓取) 您稍后要在其上测试内容的页面。
我想到的唯一例外是,如果您使用延迟 AJAX 请求将新创建的元素从服务器动态抓取到页面 - 在这种情况下创建对象 页 visit
之后可能工作正常。