2014-10-13 52 views
8

我的項目有這個值在rspec_helper.rb文件在rspec的,我們可以關閉verify_partial_doubles一個測試

mocks.verify_partial_doubles = true 

我有一個遭到舉報的測試

TaskPublisher does not implement #publish 

的問題是設置該方法在實例化之前不存在於該對象上。這是基於要發佈的任務類型的模塊導入。 (元編程)

所以我想知道是否有辦法關閉verify_partial_doubles爲特定的測試,但不會影響其他測試,確實有價值。

旁邊的問題:沒有將此標誌設置爲true使BDD不可能?在我看來,它在定義(https://stackoverflow.com/tags/mocking/info)時面對Mocking飛行。

回答

6

[是否有]關閉[verify_partial_doubles]以進行特定測試的方法..?

RSpec的> = 3.6

使用without_partial_double_verification

it 'example' do 
    without_partial_double_verification do 
    # ... 
    end 
end 

http://rspec.info/blog/2017/05/rspec-3-6-has-been-released/

RSpec的< 3.6

ÿ ES,與user-defined metadataglobal "around hook"

# In your spec .. 
describe "foo", verify_stubs: false do 
    # ... 
end 

# In spec_helper.rb 
RSpec.configure do |config| 
    config.mock_with :rspec do |mocks| 
    mocks.verify_partial_doubles = true 
    end 

    config.around(:each, verify_stubs: false) do |ex| 
    config.mock_with :rspec do |mocks| 
     mocks.verify_partial_doubles = false 
     ex.run 
     mocks.verify_partial_doubles = true 
    end 
    end 
end 

我相信信貸這種技術去Nicholas Rutherford,從他在rspec-rails issue #1076崗位。

0

我們最近遇到了類似的問題,並結束了這是怎麼回事:

config.mock_with :rspec do |mocks| 
    mocks.verify_partial_doubles = true 

    config.around(:example, :without_verify_partial_doubles) do |example| 
    mocks.verify_partial_doubles = false 
    example.call 
    mocks.verify_partial_doubles = true 
    end 
end 

非常相似,賈裏德貝克的答案,但避免了第二次調用mock_with

相關問題