0
我有一個方法是複製一個變量並將其分發到不同的對象。我想驗證正在發送的對象確實是不同的對象,而不是指向同一對象的不同指針。Rspec嘲弄,驗證收到的對象是不一樣的
我的測試目前看起來是這樣的:
it 'uses different objects when false' do
object1 = SomeClass.new
object2 = SomeClass.new
data = "something"
MasterClass.register(object1)
MasterClass.register(object2)
#Not correct:
expect(object1).to_not receive(:get_data).with(data)
expect(object2).to_not receive(:get_data).with(data)
#False is supposed to mean
# "create new objects for each call to get_data for the SomeClass"
MasterClass.distribute_data(data, false)
end
我知道我可以測試的對象屬性平等a.equal?(b)
,但我怎麼能做到這一點時,我想測試的對象是內部參數rspec mock中的with
方法?
我需要使用'... expect(arg).t o_not不等於(arg1)'而不是'eq'。顯然'eq'相當於檢查值的'==',而不是實際的對象。 – Automatico
確實。對不起,感謝您指出。我已經更新了答案。 –
這非常有趣。如果你想檢查用特定對象調用方法,你也需要使用這個方法,但是改爲'.to equal(data)'。正常的'receive(:method).with(data)'不會測試數據是同一個對象。 – Automatico