gpt4 book ai didi

ruby - 访问 "it" block 外的 ExampleGroup 范围

转载 作者:太空宇宙 更新时间:2023-11-03 18:24:34 24 4
gpt4 key购买 nike

我正在尝试使用 RSpec 的宏来 DRY 我的规范,但我遇到了一个问题。

describe "..." do
let!(:blog) { create(:blog) }

post "/blogs/#{blog.id}/posts" do
# some macros
end
end

我想访问 blog 变量,但我不想在 it { ... } block 中执行此操作,以便能够使用我的宏无论资源如何(例如,我想将其应用于 blogspostscomments 等)。

这可能吗?

最佳答案

I want to get access to blog variable but I don't want to do it inside it { ... } block

尽量不要去想let作为正常范围的变量定义。 leta complex helper method for caching the result of a code block across multiple calls within the same example group .随便你let存在于示例组中,这意味着您无法访问 let外面的“变量” it block 。

require 'spec'

describe "foo" do
let(:bar) { 1 }

bar
end
# => undefined local variable or method `bar'

就是说,如果您只想重用 create(:blog) 的结果在多个示例中,您可以执行以下操作:

describe "foo" do
let(:blog) { create(:blog) }

it "does something in one context" do
post "/blogs/#{blog.id}/posts"

# specification
end

it "does something else in another context" do
post "/blogs/#{blog.id}/comments"

# specification
end
end

关于ruby - 访问 "it" block 外的 ExampleGroup 范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13197492/

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