gpt4 book ai didi

ruby-on-rails - rspec 装饰器的未定义方法 'has_selector?'

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

我有以下 rspec 测试:

# spec/decorators/user_decorator_spec.rb    
require File.expand_path 'spec/spec_helper'

describe UserDecorator do
let(:user) { UserDecorator.new build(:user, level: build(:level)) }
subject { user }

its(:avatar) { should have_selector 'h6' }
end

然后出现错误:

Failure/Error: its(:avatar) { should have_selector 'h6' }
NoMethodError:
undefined method `has_selector?' for #<ActiveSupport::SafeBuffer:0x007fecbb2de650>
# ./spec/decorators/user_decorator_spec.rb:7:in `block (2 levels) in <top (required)>'

我尝试了流行的建议:

before { ApplicationController.new.set_current_view_context }

但随后显示未定义方法set_current_view_context。我正在使用 rspec 2.14.1capybara 2.0.1。另外,最奇怪的是——当我在一些辅助规范中编写这个测试时,它通过了,没问题……

帮助...

最佳答案

最简单的修复可能是将 type: 'helper'`type: 'view' 添加到您的 describe block 中:

describe UserDecorator, type: 'helper' do
let(:user) { UserDecorator.new build(:user, level: build(:level)) }
subject { user }

its(:avatar) { should have_selector 'h6' }
end

这样做会混合 ActionView::TestCase::BehaviorCapybara::RSpecMatchers进入你的测试。

specs/helpers 目录中的规范自动获取 'helper' 类型,specs/views 中的规范自动获取 >“查看” 类型。

由于 specs/decoratorsrspec-rails 无法理解的自定义目录,因此您需要 configure the type manually .

参见 the RSpec Rails README有关其支持的测试类型的更多信息。

关于ruby-on-rails - rspec 装饰器的未定义方法 'has_selector?',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20609043/

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