首页 > 解决方案 > NameError:使用带有 factory_bot_rails 的 minitest 的 UserTest 的未定义局部变量或方法“用户”

问题描述

:user我在我的工厂中有一个定义,但是build, create,并且build_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'

是什么赋予了?

标签: ruby-on-railsfactory-botminitest

解决方案


使用@user我的变量并用修复的问题替换=in 。根据文档,此方法需要 2-3 个参数。assert_equal user.firstname = "ss",

正确的语法是

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

推荐阅读