Переменная экземпляра теста назначена
Мне понравилось использовать это для проверки правильности установки переменной экземпляра:
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
проверить, правильно ли установлено значение.