Ruby on rails Rspec&;Factory Girl:在模型测试中的所有描述块之前,创建一个要使用的记录
出于某种原因,我发现很难找到这个简单问题的答案 我正在测试一个电影模型:Ruby on rails Rspec&;Factory Girl:在模型测试中的所有描述块之前,创建一个要使用的记录,ruby-on-rails,rspec,Ruby On Rails,Rspec,出于某种原因,我发现很难找到这个简单问题的答案 我正在测试一个电影模型: RSpec.describe Movie, type: :model do describe 'some_method' do it "should do something" do end end describe 'some_other_method' do it "should do something else" do end end end 我可以制作
RSpec.describe Movie, type: :model do
describe 'some_method' do
it "should do something" do
end
end
describe 'some_other_method' do
it "should do something else" do
end
end
end
我可以制作一部电影,比如build(:movie)
,但我不知道应该把它放在哪里。在描述块之外,它抛出一个错误:
未定义的方法“build”#
但是如果我把它放在描述块里面,它不是很干,因为我需要为每个块做
如何在每个描述块之前创建一行代码来创建新电影?使用let
:
RSpec.describe Movie, type: :model do
let(:movie) { build(:movie) }
describe 'an awesome movie' do
it "is awesome" do
expect(movie.awesome?).to be true
end
end
end
let
块在示例的上下文中执行,因此由let
定义的方法在测试中可用。这同样适用于之前的:
before do
movie.awesome = true
end
之前的中的语句在descripe块中的示例之前执行。请注意,before
和let
也可以使用嵌套的descripe
,在这种情况下,它们被定义为嵌套在descripe
中的任何上下文
RSpec.describe Movie, type: :model do
let(:movie) { build(:movie) }
describe 'an awesome movie' do
it "is awesome" do
expect(movie.awesome?).to be true
end
end
end
let
块在示例的上下文中执行,因此由let
定义的方法在测试中可用。这同样适用于之前的:
before do
movie.awesome = true
end
之前的中的语句在descripe块中的示例之前执行。请注意,before
和let
也可以使用嵌套的descripe
,在这种情况下,它们是为嵌套在descripe
中的任何上下文定义的