【问题标题】:Issue with Faker gemFaker gem的问题
【发布时间】:2015-05-13 06:10:46
【问题描述】:

我在我的 Rails 4 项目中安装了 Fabrication 和 Faker

我创建了一个制造对象:

Fabricator(:course) do
  title { Faker::Lorem.words(5) }
  description { Faker::Lorem.paragraph(2) } 
end

我在我的 courses_controller_spec.rb 测试中调用 Faker 对象:

require 'spec_helper'

describe CoursesController do
  describe "GET #show" do
    it "set @course" do
      course = Fabricate(:course)
      get :show, id: course.id
      expect(assigns(:course)).to eq(course)
    end
    it "renders the show template"
  end
end

但由于某种原因,第 6 行测试失败:

course = Fabricate(:course)

错误信息是:

Failure/Error: course = Fabricate(:course)
 TypeError:
   can't cast Array to string

不知道为什么会失败。有人在使用 Faker 时遇到过同样的错误消息吗?

【问题讨论】:

    标签: ruby-on-rails rspec faker


    【解决方案1】:

    words(5) 的返回是一个数组,而不是一个字符串。你应该这样做:

    title { Faker::Lorem.words(5).join(" ") }
    

    【讨论】:

    • 在下面添加了另一个解决方案。
    【解决方案2】:

    不确定这在当时是否可用,但另一种解决方案是给它一个句子而不是一个词:

    来自回购

    def sentence(word_count = 4, supplemental = false, random_words_to_add     = 6)
        words(word_count + rand(random_words_to_add.to_i).to_i, supplemental).join(' ').capitalize + '.'
    end
    

    所以你可以这样做:

    Faker::Lorem.sentence(5, false, 0)
    

    【讨论】:

      猜你喜欢
      • 2015-03-13
      • 2012-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-14
      • 2016-11-06
      • 2014-02-18
      • 1970-01-01
      相关资源
      最近更新 更多