首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rspec -使用create

Rspec -使用create
EN

Stack Overflow用户
提问于 2015-07-09 10:38:27
回答 1查看 1.6K关注 0票数 0

在Rspec中,我试图通过减少持久化到数据库的对象数量来加速测试。我也在用工厂女孩。

使用下面的示例,这是在数据库中创建的吗?如果是这样的话,如何才能将其更改为不使用数据库呢?

代码语言:javascript
复制
   require 'rails_helper'

describe BankingDetail do
  let(:user) {create :user}
  let(:principal){create :principal}
  let(:credit_type){create :credit_type}
  let(:security_type_1){create :security_type}
  let(:security_type_2){create :security_type, name: 'Test Working Capital'}
  let(:banking_detail) {create :banking_detail, credit_type: credit_type, bank_line: "12345.00000", bank_id: 1, principal: principal, create_user: user}

  it 'is a valid factory' do
    expect(FactoryGirl.create(:banking_detail, credit_type: credit_type, bank_line: "12345.00000", bank_id: 1, principal: principal, create_user: user )).to be_valid
  end

  it 'should not be saved when principal is empty' do
    banking_detail.principal_id = nil
    expect(banking_detail.save).not_to be_truthy
  end

  it 'should not be saved when create user is empty' do
    banking_detail.create_user_id = nil
    expect(banking_detail.save).not_to be_truthy
  end

  it 'should be able to generate a version' do
    banking_detail = build(:banking_detail, credit_type: credit_type, bank_line: "12345.00000", bank_id: 1, principal: principal, create_user: user)
    expect{banking_detail.generate_version!('update')}.to change(BankingDetailVersion, :count).by(1)
  end

  context 'validation' do
    it 'should not save when bank line is  empty ' do
      banking_detail.bank_line = nil
      expect(banking_detail.save).not_to be_truthy
    end

    it 'should not save when bank line is not in the minimum maximum currency range ' do
      banking_detail.bank_line = 1_000_000_000_000_000_0000
      expect(banking_detail.save).not_to be_truthy
    end
    it 'should not save when credit_available is not in the minimum maximum currency range ' do
      banking_detail.credit_available = 1_000_000_000_000_000_0000
      expect(banking_detail.save).not_to be_truthy
    end
  end

end
EN

回答 1

Stack Overflow用户

发布于 2015-07-09 10:46:19

例如,如果使用build_stubbed,就会有一个FactoryGirl方法。它可以大大加快规格,并且不会为数据库创建对象。

我引用这里的一点描述

build_stubbed是更年轻、更时髦的构建伙伴;它实例化并分配属性,就像build一样,但这正是相似之处所在。它使对象看起来像是持久化的,创建与build_stubbed策略的关联(而构建仍然使用create),并存根出一些与数据库交互并在调用它们时引发的方法。这将导致更快的测试,并减少对数据库的测试依赖。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31314999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档