неопределенный метод `disallow_value' для #‹RSpec::Core::ExampleGroup::Nested_1:0x0000000a4b3a98›

У меня есть следующий оператор Rspec:

it "requires a valid email address" do
  should disallow_value("@email.com", "email.com", "my@email",
    "my@e_mail.com", "[email protected]", "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)

Любая идея, что происходит не так?

ОБНОВИТЬ:

Gemfile:

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

group :test do
  gem 'shoulda-matchers'
end

person nullnullnull    schedule 29.12.2013    source источник


Ответы (1)


Это интересно. файл README был переписан в ноябре 2013 г., чтобы включить документацию для disallow_value, но, несмотря на DisallowValueMatcher модуль, посвященный реализации такой сопоставитель, для него не включает использование метода disallow_value. Я отправил проблему с жемчугом shoulda-matchers

В ожидании получения дополнительной информации об этом я бы рекомендовал использовать should_not allow_value в качестве альтернативы.

Обновление. Разработчики shoulda gem признали это ошибкой в ​​документации.

person Peter Alfvin    schedule 29.12.2013
comment
Я добавил соответствующую часть моего gemfile к вопросу. Вроде нормально настроен. Любые другие идеи? - person nullnullnull; 29.12.2013
comment
Он находится как в группе :development, так и в группе :test. Я определил их совместно. - person nullnullnull; 29.12.2013
comment
Спасибо, Питер! Вы действительно пошли выше и дальше здесь. - person nullnullnull; 30.12.2013
comment
Спасибо вам за указание на это. Вы, несомненно, избавили других от значительного горя. - person Peter Alfvin; 30.12.2013
comment
Почему было принято решение удалить его? Кажется, это полезный способ выразить утверждение, и в некоторых случаях он может быть более ясным. - person mwfearnley; 28.06.2016