[英]Mocking class in Sinon.js and instanceof
我想模擬某個類的某個對象,但是要抓住這個錯誤:
function MyClass(){}
var myInstance = new MyClass();
var mock = sinon.mock(myInstance);
console.log(mock instanceof MyClass); // false
如果單元在構造函數中檢查完全相同的instanceof,如何將該模擬傳遞給被測單元?
我知道,那個存根可以解決這個問題,但是我需要Mock。
謝謝=)
如果我沒有記錯的話,Sinon模擬將包裝它們的關聯對象,而不是直接采用其原型鏈,這意味着instanceof
永遠不會像您想要的那樣工作。
如果您有能力更改被測單元,請考慮檢查傳入對象(而不是其原型鏈)上是否存在重要屬性。 例如,如果您的單元使用MyClass
的foo
方法,則讓單元檢查typeof o.foo === 'function'
而不是o instanceof MyClass
。
這個問題是錯的。
無需將mock
傳遞給被測單元,我仍然需要傳遞myInstance
對象,然后驗證mock
:
new SUT(myInstance);
mock.verify();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.