分配了测试实例变量

时间:2014-07-01 00:48:51

标签: rspec shoulda

我喜欢用它来测试设置的正确实例变量:

it { should assign_to(:resource) }

我再也找不到了https://github.com/thoughtbot/shoulda-matchers

我怎样才能找回它或写我自己的匹配器?

他们为什么删除它?似乎对我有用。

2 个答案:

答案 0 :(得分: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)}

答案 1 :(得分:0)

如果此变量不是来自您的公共接口,那么测试它是没有意义的。如果您有访问者,则可以使用respond_toeq结合使用来检查值是否已正确设置。