【问题标题】:FactoryGirl build ignored when testing with Shoulda Matchers使用 Shoulda Matchers 进行测试时忽略 FactoryGirl 构建
【发布时间】:2015-07-11 01:58:45
【问题描述】:

我最近切换到了 Shoulda Matchers,但似乎无法验证我的工厂版本。我已经在之前的回调中实例化了我的工厂构建,但匹配器似乎甚至没有承认它。例如,我故意将我的实例名称设置为nil,但测试没有返回错误。我做错了什么?

require 'rails_helper'

describe Restaurant do
  context 'validations' do
    before { FactoryGirl.build(:restaurant, name: nil) }

    it do
      should validate_presence_of(:name)
    end
  end
end

【问题讨论】:

    标签: ruby-on-rails testing rspec factory-bot shoulda


    【解决方案1】:

    对于这种情况,您不需要实例来匹配 Shoulda 匹配器;它只会针对模型定义本身测试the usage of validate_presence_of

    所以,我会这样重写你的测试:

    require 'rails_helper'
    
    describe Restaurant do
      it { should validate_presence_of(:name) }
    end
    

    【讨论】:

    • 所以从某种意义上说,它只是检查该特定模型是否具有与:name 属性关联的presence 验证器?
    • 差不多。我敢打赌,实际上在匹配器中使用测试数据对属性进行了一些检查,但该实例不是您必须提供或练习的东西。
    • 我明白了。那么你将如何使用 shoulda-matchers 测试工厂?
    • 根据我的经验,直接测试工厂是没有意义的;如果我正在测试模型本身的某些需要它的实例的东西,我会以我认为合适的方式进行测试。但我觉得这可能是它自己的问题。 ;)
    • 正确。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2016-06-30
    • 1970-01-01
    • 2014-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-08
    • 1970-01-01
    相关资源
    最近更新 更多