gpt4 book ai didi

ruby-on-rails - 将 RSpec 的 `all` 匹配器与 Capybara 的 `have_css` 匹配器一起使用时出错

转载 作者:行者123 更新时间:2023-12-04 06:37:10 25 4
gpt4 key购买 nike

我刚刚开始使用 RSpec(和 Capybara)进行功能规范。我正在测试我的 ActiveAdmin 仪表板,我想检查所有面板是否都有一个订单表,如以下代码段所示:

feature 'admin dashboard', type: :feature do
def panels
page.all('.column .panel')
end

describe 'all panels' do
it 'have an orders table' do
expect(panels).to all(have_css('table.orders tbody'))
end
end
end

我用过 all在我的单元测试中匹配器很多,但是在包装 Capybara 的 have_css 时它似乎不起作用matcher,因为我收到以下错误:
Failure/Error: expect(panels).to all(have_css('table.orders tbody'))
TypeError:
no implicit conversion of Capybara::RackTest::CSSHandlers into String

我的假设是否正确,即 RSpec 的内置 all匹配器也应该与其他匹配器一起使用?

注意:我使用的是 describeit而不是 featurescenario在这种情况下,因为我正在测试输出而不是用户交互场景(参见我的 other question)。

最佳答案

我对接受的答案使用了非常相似的方法,但是在 Cucumber 环境中,我收到了关于 RSpec.configure 的错误。不存在。另外,我想把匹配器称为 all 之外的东西。这样我就可以同时使用它们而不会发生冲突。这就是我最终得到的

# features/support/rspec_each.rb

module RSpecEach
def each(expected)
RSpec::Matchers::BuiltIn::All.new(expected)
end
end

World(RSpecEach) # extends the Cucumber World environment

现在我可以执行以下操作:
expect(page.all('#employees_by_dept td.counts')).to each(have_text('1'))

关于ruby-on-rails - 将 RSpec 的 `all` 匹配器与 Capybara 的 `have_css` 匹配器一起使用时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25902067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com