尝试在Rails中设置rspec测试时获取未初始化的常量Faker :: String

问题描述 投票:1回答:2

我有一个UrlContent模型,我正在尝试为Json的索引页面的API调用编写一个rspec测试。但是,每当我运行rspec时,它都会给我这个错误:

 Failure/Error: content { Faker::String }

 NameError:
   uninitialized constant Faker::String

当属性的faker看似已正确配置时,为什么会出现该错误?

这让我感到困惑,因为在我的spec / factories / url_content.rb文件中我有:

要求'faker'

FactoryBot.define do
  factory :url_content do
    content { Faker::String }
  end
end

我设置的具体rspec测试是:

require 'rails_helper'
require 'faker'

RSpec.describe "UrlContents API", type: :request do

    before { FactoryBot.create_list(:url_content, 3) }

describe 'GET /url_contents' do
    before { get '/url_contents'}

    it 'returns a status code of 200' do 
        expect(response).to have_http_status(200)
    end

    it 'returns an array of content in JSON' do 
        json = JSON.parse(response.body, symbolize_names: true)

    end 

end

end 
ruby-on-rails ruby rspec factory-bot
2个回答
2
投票

Faker::String 9天前在December 24被添加到faker gem中,最新版本的faker(1.8.7)发布在December 22上。你必须使用github的版本才能使用Faker::String。在Gemfile中指定git存储库,如下所示:

gem 'faker', git: 'https://github.com/stympy/faker'

1
投票

Faker::String was added to the ruby gem 9 days ago

在撰写本文时,The most recent gem version1.8.7;这是在12月22日(即加入Faker::String之前)发布的。

如果你想使用gem的这个功能,你需要告诉bundler使用repo的master分支:

gem 'faker', git: 'https://github.com/stympy/faker'

......或者,从源头本地构建gem。

git clone [email protected]:stympy/faker.git
rake install

你选择在一个积极维护的宝石上使用未发布的功能,这是非常不吉利的。

但是,一般情况下,您可以检查changelog以查看您的宝石版本是否足够最新;或者,如果没有,那就是直接的git历史。

您还可以在项目中运行bundle open faker,并导航源代码以查看您的功能是否存在于已安装的gem中。

© www.soinside.com 2019 - 2024. All rights reserved.