问题是capybara / rspec打印到屏幕上的结果与数据库中的值不同。
背景 - 我在促销和产品之间有多对多的关系。 - 促销有一个products_counter专栏,用于跟踪与促销相关的产品数量。这是通过关联上的counter_cache来处理的。 - 此功能正常运行。我已经通过前端测试了它 - 基本的crud功能 - 前端的所有数据都是正确的。
事情正在发生,我无法弄清楚。我的规范失败了,因为页面上没有值'1',这是产品数量。页面上的产品计数为2。 我认为这issue可能是朝着正确方向发展的一点,但我没有运气,谷歌上没有其他的东西。
请参阅下面的规范。
require 'rails_helper'
include Warden::Test::Helpers
Warden.test_mode!
feature 'Promo index page' do
scenario 'displays a list of promos' do
admin = create(:user, :admin)
p1 = create(:promo)
p1.products << create(:product)
login_as(admin)
visit promos_path
puts p1.products.count # => 1 in console
puts p1.products_count # => 1 in console
# save_and_open_page => this gives me a view into the page
# on the browser - lets me see that product count is printing
# to the screen as 2
expect(page).to have_text p.code
expect(page).to have_text p.name
expect(page).to have_text p.products.count # => fails because page displays 2 instead of 1
end
end
我已经为那些想要了解它是如何渲染的人提供了视图。
header.full-width-row
.columns.large-12
= link_to 'New Promo', new_promo_path, class: 'right button tiny radius'
section.full-width-row
.columns.large-12
table.full-width
thead
tr
td = "Code"
td = "Name"
td = "Product Count"
tbody
- @promos.each do |p|
tr
td.filter-on = p.code
td.filter-on = link_to p.name, promo_path(p)
td = p.products_count
任何帮助表示感谢。