Rspec / Capybara没有显示cache_counter的预期结果

时间:2014-09-03 08:56:01

标签: ruby-on-rails-4 rspec capybara

问题是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

任何帮助表示感谢。

0 个答案:

没有答案