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
,但是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'
什么给了?
对我的变量使用 @user
并将 assert_equal user.firstname = "ss"
中的 =
替换为 ,
解决了问题。根据 docs,此方法需要 2 - 3 个参数。
正确的语法是
def test_valid_setup
assert_equal @user.firstname, "ss"
end
我的工厂里定义了一个: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'
什么给了?
对我的变量使用 @user
并将 assert_equal user.firstname = "ss"
中的 =
替换为 ,
解决了问题。根据 docs,此方法需要 2 - 3 个参数。
正确的语法是
def test_valid_setup
assert_equal @user.firstname, "ss"
end