rspec `свой` синтаксис с динамическими условиями

Мне очень нравится использовать контексты , подвергает и его с помощью 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 , но опять же, я не иметь доступ к моей исходной рассматриваемой теме .

20
задан Raedwald 1 March 2019 в 14:48
поделиться