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