запрос о создании записей has_many & own_to с использованием FactoryBot - PullRequest
0 голосов
/ 22 ноября 2018

Я пишу Rspec requests spec, и перед этим я хочу построить некоторые тестовые данные, используя FactoryBot.

И теперь у меня есть модель Game:

class Game < ApplicationRecord
  has_many :game_levels

и модель GameLevel:

class GameLevel < ApplicationRecord
  belongs_to :game

По моему /spec/factories/game.rb:

FactoryBot.define do
  factory :game do
    name { :Mario }
  end
end

По моему spec/factories/game_level.rb:

FactoryBot.define do
  factory :game_level do
    name { :default }
    min_level { 0 }
    max_level { 100 }

    game
  end
end

По моему spec/requests/user_plays_game_spec.rb, я просто написал код для создания game & game_level и напечатал game.id, game_level.game_id.Я обнаружил, что они не одинаковы.кроме того, game.game_levels возвращает nil.

before(:all) do
  @game = create(:game)
  @game_level = create(:game_level)
end

describe do
  it do
    puts @game,id, @game_level.game_id
    puts @game.game_levels

    expect(@game.id).to eql(@game_level.game_id)
  end
end

Так как мне связать запись belongs_to с записью has_many, используя FactoryBot?

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Ассоциации на фабриках интуитивно понятны:

FactoryBot.define do
  factory :template do
    template_category { create(:template_category) }
  end
end

Ничего особенного.Если это не работает для вас, возможно, у вас проблема с конфигурацией.

0 голосов
/ 22 ноября 2018

Вы можете связать его во время создания

@game = create(:game)
@game_level = create(:game_level, game: @game)
...