我为我的rails应用程序编写了测试用例,以检查用户是否连接到facebook。为此目的,我需要在我的rails应用程序中存根方法,否则它给了我一个错误。 所以我用了
SocialNet::Facebook.any_instance.stubs(:status).returns(true)
如果我在我的测试用例中写过这一行,比如
test 'z' do
SocialNet::Facebook.any_instance.stubs(:status).returns(true)
# testing code
end
然后运行命令
ruby -I test test / integration / erp_flows_test.rb -n test_z。
然后它工作正常,但如果我放置
SocialNet::Facebook.any_instance.stubs(:status).returns(true)
然后为测试用例运行相同的命令效果很好。但是如果我通过命令ruby -I test test/integration/erp_flows_test.rb
在我的文件中运行所有测试用例,那么它就不起作用了。
这是否意味着
SocialNet :: Facebook.any_instance.stubs(:status).returns(true)有 仅在测试用例中范围有限?究竟我做错了什么
我使用Minitest进行测试
答案 0 :(得分:0)
你所回答的问题很难回答。
不清楚您在test_helper.rb
中定义的具有prepare
类方法的类或模块。您是否确认该方法已被调用?
这是RSpec :: Mock关于使用他们的any_instance
存根版本的问题:any_instance。特别是,
"使用此功能通常是一种设计气味。可能是您的测试试图做得太多,或者被测对象太复杂了。"
最好有一个实例(不是任何旧版本),并在实例上存根该方法。