Мне очень нравилось использовать contexts
, subjects
и its
с помощью rspec для действительно очистки моего тестового кода. Типичный пример:
context "as a user" do
subject{ Factory :user }
its(:name){ should == "Bob" }
end
То, что я не могу понять, это то, как я могу сделать это условие динамическим (т.е. основанным на других объектах). its
появляется экземпляр eval атрибута внутри блока, поэтому я теряю доступ ко всему вокруг него. Я хотел бы сделать что-то вроде:
its(:name){ should == subject.contact.name }
Но я не вижу никакого способа добиться этого. Кто-нибудь знает, есть ли какой-либо метод, проксированный через этот экземпляр eval, который дает доступ к исходному объекту? Или, если есть какой-либо другой способ, я могу использовать методы вне области экземпляра атрибута, который я проверяю?
дополнительная информация
Кажется, что subject
в блоке its
изменяется на фактический атрибут (name
в этом случае)
Интересно, что у меня есть доступ к любому из моих методов let
, но опять же, у меня нет доступа к исходному subject
вопросу.