2017-04-24 20 views
0

我爲我的rails應用程序編寫了測試用例來檢查用戶是否連接到Facebook。爲此,我需要在我的rails應用程序中存根方法,否則會給我一個錯誤。 所以我用在mocha gem中存留any_instance的範圍

SocialNet::Facebook.any_instance.stubs(:status).returns(true) 

如果我在測試的情況下寫了這條線像

test 'z' do 
    SocialNet::Facebook.any_instance.stubs(:status).returns(true) 
    # testing code 
end 

,然後運行命令

紅寶石-I試驗測試/集成/ erp_flows_test.rb - n test_z。

然後它工作正常,但如果我把

SocialNet::Facebook.any_instance.stubs(:status).returns(true)

test_helper文件中高清self.prepare實現方法具 d。然後對測試用例運行相同的命令運行良好。但是,如果我通過命令ruby -I test test/integration/erp_flows_test.rb運行我的文件中的所有測試用例,那麼它不起作用。

這是否意味着

SocialNet :: Facebook.any_instance.stubs(:狀態).returns(真)在僅測試案例 有限的範圍內?究竟我做錯了

我使用MINITEST用於測試目的

回答

0

這是從你給回答的問題是什麼艱難。

目前還不清楚你在test_helper.rb中定義了什麼類或模塊,它有一個prepare類方法。你是否證實該方法被調用?

下面是RSpec :: Mock有關使用他們的any_instance存根版本的說明:any_instance。特別是,

「使用此功能通常是一種設計氣味,可能是因爲您的測試試圖做得太多,或者測試對象太複雜。」

最好有一個實例(不是任何舊的),並將該方法存根在實例上。