【问题标题】:Faker Gem to Specific Values?伪造宝石到特定值?
【发布时间】:2016-12-02 04:02:01
【问题描述】:

假设我有一个简单的工厂:

FactoryGirl.define do
  factory :state do
    name Faker::Address.state_abbr    
  end
end

例如,我们使用的大多数单元测试都是“可以”的,例如有一个随机的state_abbr

但是,我有一些依赖于下拉列表的集成测试(在表单中选择一个状态),因为我不知道会生成什么,所以我无法具体选择它。

因为做了这样的事情: @state = FactoryGirl.create(:state, state_abbr: 'WA')

在我的 Capybara 集成规范中似乎不起作用。有什么方法可以覆盖伪造者正在生成的内容吗?

(因为我收到类似的错误,例如:

失败/错误:@state = FactoryGirl.create(:state, state_abbr: 'WA') 无方法错误: # 的未定义方法 `state_abbr='

用“名称:“XX”改变缩写。

作为参考,我不能只是去改变工厂,因为许多其他单元测试都依赖它,这是用于新的集成测试。

【问题讨论】:

  • @state = FactoryGirl.create(:state, state_abbr: 'WA') 不起作用是什么意思?当然不是,你在工厂里设置了name
  • :facepalm: 时刻由我确定哈!
  • 别担心,发生了!

标签: ruby-on-rails capybara faker


【解决方案1】:

那是因为在您的州工厂中,该字段是 name 而不是 state_abbr

@state = FactoryGirl.create(:state, name: 'WA')

【讨论】:

  • :拍脑门:哇哈哈。至少我知道这是可行的!哈。工厂对我来说是全新的并没有帮助哈哈。我使用来自用户工厂的参考来执行此操作,出于某种原因,在这种情况下,模型“名称”与右侧的相同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-10
  • 1970-01-01
  • 1970-01-01
  • 2013-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多