2013-06-24 4 views
0

У меня есть одна модель (обсуждение), которая имеет одну другую модель (видимость). Там в before_validation :on => :create вызов для обсуждения модели, которая устанавливает значение на visibility, а именно:Исключение RSpec при проверке присутствия

class Discussion 
    has_one :visibility 

    validates_presence_of :some_unrelated_field 

    before_validation :set_visibility_relationship, :on => :create 

    private 

    def set_visibility_relationship 
    visibility.some_entity = self.the_same_entity 
    end 
end 

я тогда следующее в моем discussion_spec.rb:

it { should validate_presence_of(:some_unrelated_field) } 

before_validation бросает ошибку:

Failure/Error: it { should validate_presence_of :some_unrelated_field } 
NoMethodError: 
    undefined method `visibility.some_entity' for #<Discussion:0x007ff6ebc43170> 

Если я прокомментирую либо звонок before_validation, либо should validate_presence_of для несвязанных поле, все мои тесты проходят.

Я попытался сделать шаг с помощью pry, и я обнаружил, что одним из ключей ошибки, установленным в дискуссии, является «visibility.some_entity», а все остальные ключи были основаны на атрибутах, например: «some_unrelated_field». Похоже, может быть какая-то ошибка в rspec, которая вызывает эту ошибку, но я могу просто делать что-то неправильно.

+0

В вашей модели обсуждения есть ли 'has_one: видимость'? –

+0

Есть, извините, я оставил это из кода. Отредактировано, чтобы включить его в пример. –

ответ

0

Похоже, на самом деле это проблема с шагами-помощниками 2.0.0. Обновление до версии 2.2.0 устранило проблему.