2017-03-22 10 views
0

私はthis answerを見て、私はfailure_message_when_negated部分を理解しませんでした。RSpec Matchersで 'failure_message_when_negated'とは何を意味していますか?

RSpec::Matchers.define :have_attr_accessor do |field| 
    match do |object_instance| 
    object_instance.respond_to?(field) && 
     object_instance.respond_to?("#{field}=") 
    end 

    failure_message do |object_instance| 
    "expected attr_accessor for #{field} on #{object_instance}" 
    end 

    failure_message_when_negated do |object_instance| 
    "expected attr_accessor for #{field} not to be defined on #{object_instance}" 
    end 

    description do 
    "assert there is an attr_accessor of the given name on the supplied object" 
    end 
end 

単純な言葉ではどういう意味ですか?私は本当に明確ではない、foo-barの説明に感謝します。

答えて

0

私はそれを得ると思います。

# if the Model has `attr_accessor` named `:promotion_type` 
# `it { should_not have_attr_accessor :promotion_type }` test 
# will return failure (call this `failure_message_when_negated`) 
# because the Model is clearly has `:promotion_type` 
failure_message_when_negated do |object_instance| 
    "expected attr_accessor for #{field} not to be defined on #{object_instance}" 
end 

例失敗メッセージ:

1) Promotion should not assert there is an attr_accessor of the given name on the supplied object 
    Failure/Error: it { should_not have_attr_accessor :promotion_type } 
     expected attr_accessor for promotion_type not to be defined on #<Promotion:0x007fd939c840c8> 
関連する問題