NameError: undefined local variable or method 'user' for UserTest using minitest with factory_bot_rails

NameError: undefined local variable or method 'user' for UserTest using minitest with factory_bot_rails

我的工厂里定义了一个:user,但是buildcreatebuild_stubbed出于某种原因抛出了一个未定义的变量方法。我正在使用 minitest 和 factory_bot_rails.

这是我的测试:

require 'test_helper'

class UserTest < Minitest::Test
 def setup
  user = FactoryBot.create(:user)
 end

 def test_valid_setup
  assert_equal user.firstname = "ss"
 end
end

这是我的工厂:

FactoryBot.define do
 factory :user do
    email Faker::Internet.email
    firstname "ss"
    lastname Faker::Name.last_name
    username Faker::Pokemon.name
    website Faker::Internet.domain_name
 end
end

我的 test_helper 里也有这个:

class Minitest::Unit::TestCase
 include FactoryBot::Syntax::Methods
end

我的错误输出是:

Error:
UserTest#test_valid_setup:
NameError: undefined local variable or method `user' for #<UserTest:0x007fe1e87d9908> 
test/models/user_test.rb:9:in `test_valid_setup'

什么给了?

对我的变量使用 @user 并将 assert_equal user.firstname = "ss" 中的 = 替换为 , 解决了问题。根据 docs,此方法需要 2 - 3 个参数。

正确的语法是

def test_valid_setup
 assert_equal @user.firstname, "ss"
end