У меня есть модель UrlContent, и я пытаюсь написать тест rspec для вызова API на страницу индекса для Json. Однако всякий раз, когда я запускаю rspec, он выдает такую ошибку:

 Failure/Error: content { Faker::String }

 NameError:
   uninitialized constant Faker::String

Почему он выдает эту ошибку, если фейкер для атрибута, по-видимому, уже настроен правильно?

Меня это сбивает с толку, потому что в моем файле spec / factory / url_content.rb у меня есть:

Требовать 'фейкер'

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 
1
Dog 3 Янв 2018 в 01:12

2 ответа

Лучший ответ

Faker::String был добавлен в фейкер-гем 9 дней назад 24 декабря и последняя версия faker (1.8.7) была опубликована 22 декабря. Вам нужно будет использовать версию из Github, чтобы использовать Faker::String. Укажите репозиторий git в вашем Gemfile, как показано ниже:

gem 'faker', git: 'https://github.com/stympy/faker'
3
Arun Kumar Mohan 19 Июл 2019 в 23:08

Faker::String был добавлен в рубиновый драгоценный камень 9 дней назад .

Самая последняя версия гема на момент написания: 1.8.7; который был выпущен 22 декабря (т.е. до добавления Faker::String).

Если вы хотите использовать эту функцию драгоценного камня, вам нужно указать сборщику, чтобы он использовал главную ветвь репозитория:

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

... или создайте драгоценный камень локально из исходного кода.

git clone git@github.com:stympy/faker.git
rake install

Очень не повезло, что вы решили использовать невыпущенную функцию в активно поддерживаемом геме, таком как этот.

Однако в целом вы можете проверить changelog, чтобы проверьте, достаточно ли актуальна ваша версия гема; или, в противном случае, напрямую git history.

Вы также можете запустить bundle open faker в своем проекте и просмотреть исходный код, чтобы увидеть, существует ли ваша функция в установленном геме.

1
Arun Kumar Mohan 2 Янв 2018 в 22:35