gpt4 book ai didi

ruby - 具有动态条件的 rspec `its` 语法

转载 作者:数据小太阳 更新时间:2023-10-29 06:31:05 26 4
gpt4 key购买 nike

我真的很喜欢将 contextssubjectsits 与 rspec 一起使用来真正清理我的测试代码。典型例子:

context "as a user" do
subject{ Factory :user }

its(:name){ should == "Bob" }
end

但我想不通的是如何使这种情况动态化(即基于其他对象)。 its 似乎对 block 内的属性进行实例评估,因此我无法访问它周围的所有内容。我很想做这样的事情:

its(:name){ should == subject.contact.name }

但我看不出有什么方法可以实现这一点。有谁知道是否有一些方法代理到这个实例 eval 来访问原始对象?或者如果有任何其他方法我可以在我正在检查的属性实例范围之外使用方法?

附加信息

似乎 its block 中的 subject 已更改为实际属性(在本例中为 name)

有趣的是,我可以访问我的任何 let 方法,但同样,我无法访问我的原始 subject 问题。

最佳答案

你几乎是在回答自己,在设置主题之前使用 let 赋值。然后你就可以到处引用它了:

context "as a user" do
let(:user) { Factory(:user) }
subject { user }
its(:name) { should == user.contact.name }
end

我也是contextsubjectits 的爱好者!

关于ruby - 具有动态条件的 rspec `its` 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7798527/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com