当前位置:  开发笔记 > 编程语言 > 正文

Rspec和Factory Girl:在模型测试中的所有描述块之前创建一个要使用的记录

如何解决《Rspec和FactoryGirl:在模型测试中的所有描述块之前创建一个要使用的记录》经验,为你挑选了1个好方法。

出于某种原因,我发现很难找到这个简单问题的答案.

我正在测试一个电影模型:

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),但我不知道应该把它放在哪里.在describe块之外,它会抛出一个错误:

未定义的方法`build'for#

但是如果我把它放在describe块中,它就不是很干,因为我需要为每个块做这个.

如何在每个描述块之前创建一行代码来创建新电影?



1> zetetic..:

用途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:

before do
  movie.awesome = true
end

语句在beforedescribe块中的示例之前执行.请注意,beforelet还可以嵌套的工作describe,在这种情况下,它们是为嵌套在任何上下文定义describe.

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有