【问题标题】:undefined method `disallow_value' for #<RSpec::Core::ExampleGroup::Nested_1:0x0000000a4b3a98>#<RSpec::Core::ExampleGroup::Nested_1:0x0000000a4b3a98> 的未定义方法“disallow_value”
【发布时间】:2013-12-29 17:26:10
【问题描述】:

我有以下 Rspec 声明:

it "requires a valid email address" do
  should disallow_value("@email.com", "email.com", "my@email",
    "my@e_mail.com", "my!@email.com", "my @email.com").for(:email)
end

当我运行我的测试时,这个语句总是失败:

Failure/Error: should disallow_value("@email.com", "email.com", "my@email",
NoMethodError:
   undefined method `disallow_value' for #<RSpec::Core::ExampleGroup::Nested_1:0x000000090ea4a8>

我的 Shoulda 版本是:

shoulda (3.5.0)
shoulda-context (1.1.6)
shoulda-matchers (2.4.0)

知道出了什么问题吗?

更新:

宝石文件:

group :development, :test do
  gem 'rspec-rails'
  gem 'factory_girl_rails'
end

group :test do
  gem 'shoulda-matchers'
end

【问题讨论】:

    标签: ruby-on-rails ruby rspec shoulda


    【解决方案1】:

    这很有趣。 README file was rewritten 于 2013 年 11 月包含 disallow_value 的文档,但尽管 DisallowValueMatcher module 致力于实现这样的匹配器,spec for it 不包括任何使用 disallow_value 方法。我提交了issue against the shoulda-matchers gem

    等待更多信息,我建议使用should_not allow_value 作为替代方案。

    更新:shouda gem 维护者已在文档中确认这是一个错误。

    【讨论】:

    • 我已将我的 gemfile 的相关部分添加到问题中。看起来它设置正确。还有其他想法吗?
    • 它在 :development 和 :test 组中。我共同定义了它们。
    • 谢谢,彼得!你真的已经超越了这里。
    • 感谢指出这一点。毫无疑问,您为其他人节省了相当大的痛苦。
    • 为什么决定删除它?这似乎是表达陈述的一种有用方式,并且在某些情况下可能更清晰。
    猜你喜欢
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多