【发布时间】:2014-11-27 06:50:06
【问题描述】:
我有两个规格。一个使用所有默认值编写(我认为 selenium 是默认值?),另一个使用 webkit。它们完全相同,但一个失败另一个没有
规格
let(:admin) {create(:user, :admin)}
let(:programme) { create(:programme, :full_payment_scheme) }
before(:each) do
login_as(admin)
visit edit_programme_path(programme)
end
scenario 'adding a payment_scheme', js: true do
new_payment_scheme = create(:payment_scheme)
visit edit_programme_path(programme)
click_link 'Add Payment Scheme'
select new_payment_scheme.name, from: all('select[id*="programme_programme_payment_schemes_attributes"][id*="payment_scheme_id"]').last[:id]
fill_in all('input[id*="programme_programme_payment_schemes_attributes"][id*="markup"]').last[:id], with: 50
fill_in all('input[id*="programme_payment_scheme_allocations_attributes"][id*="interval_weeks"]').last[:id], with: 10
fill_in all('input[id*="programme_payment_scheme_allocations_attributes"][id*="allocation"]').last[:id], with: 100
expect {click_button "Save"}.to change{ProgrammePaymentScheme.count}.by(1)
end
上述规范中的 javascript 发生在 click_link 'Add Payment Scheme' 上。它将支付方案的控件添加到页面并填充这些控件。注意我知道 ID 看起来很奇怪,但是当您使用嵌套属性并将控件动态添加到页面时,ID 中有一个随机部分(通常计算为日期)。所以我不能使用直接ID。我必须使用一个时髦的 CSS 选择器。
默认结果
Programme edit page
editing the payment_scheme
adding a payment_scheme
Finished in 8.57 seconds (files took 1.25 seconds to load)
1 example, 0 failures
Top 1 slowest examples (7.6 seconds, 88.7% of total time):
Programme edit page editing the payment_scheme adding a payment_scheme
7.6 seconds ./spec/features/programmes/programme_edit_spec.rb:48
ryanme@Ryan-Mes-MacBook-Pro ~/Sites/phoenix ±20487304354485⚡ » rspec spec/features/programmes/programme_edit_spec.rb
Webkit 的结果
Programme edit page
editing the payment_scheme
adding a payment_scheme (FAILED - 1)
Failures:
1) Programme edit page editing the payment_scheme adding a payment_scheme
Failure/Error: expect {click_button "Save"}.to change{ProgrammePaymentScheme.count}.by(1)
expected result to have changed by 1, but was changed by 0
# ./spec/features/programmes/programme_edit_spec.rb:57:in `block (3 levels) in <top (required)>'
# -e:1:in `<main>'
Finished in 3.8 seconds (files took 0.53482 seconds to load)
1 example, 1 failure
Failed examples:
rspec ./spec/features/programmes/programme_edit_spec.rb:48 # Programme edit page editing the payment_scheme adding a payment_scheme
Top 1 slowest examples (3.48 seconds, 91.5% of total time):
Programme edit page editing the payment_scheme adding a payment_scheme
3.48 seconds ./spec/features/programmes/programme_edit_spec.rb:48
当我使用 launchy 保存并打开页面时,我发现由于某种原因它没有填写付款方案字段。此功能使用 selenium 可以正常工作。我已经尝试过重做测试,但没有运气。
我认为这就是一切。任何意见将不胜感激。
【问题讨论】:
标签: ruby ruby-on-rails-4 rspec capybara capybara-webkit