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