Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rspec&;Factory Girl:在模型测试中的所有描述块之前,创建一个要使用的记录_Ruby On Rails_Rspec - Fatal编程技术网

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
中的任何上下文定义的