Переменная экземпляра теста назначена

Мне понравилось использовать это для проверки правильности установки переменной экземпляра:

it { should assign_to(:resource) }

Я не могу найти его больше https://github.com/thoughtbot/shoulda-matchers.

Как я могу получить его обратно или написать свой собственный сопоставитель?

Почему они удалили это? Кажется полезным для меня

2 ответа

Вот быстрое совпадение, которое я собрал за несколько минут:

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)}

Если эта переменная не из вашего открытого интерфейса, нет смысла ее тестировать. Если у вас есть аксессуар для него, вы можете использовать respond_to в сочетании с eq проверить, правильно ли установлено значение.

Другие вопросы по тегам