2014-07-01 69 views

回答

0

这里有一个快速匹配我在几分钟内扔在一起:

RSpec::Matchers.define :set_the_instance_variable do |instance| 
    match do |actual| 
     @actual = controller.instance_variable_get(instance) 
     @actual == @value 
    end 

    failure_message_for_should do |actual| 
     "Expected '#{instance}' to equal #{@value}. However, it did not: \n '#{@actual.inspect}' \n '#{@value.inspect}'" 
    end 

    failure_message_for_should_not do |actual| 
     "Expected '#{instance}' to not equal #{@value}. However, it did: \n '#{@actual.inspect}' \n '#{@value.inspect}'"  end 

    description do 
     "'#{instance}' should equal #{@value}." 
    end 

    def to(value) 
     @value = value 
     self 
    end 
end 

使用

it { should set_the_instance_variable(:@folder).to(parent_folder)} 
0

如果这个变量从您的公共接口是不是有在测试中它是没有意义的。如果你有一个accesor它可以使用respond_to结合eq检查值是否正确设置。