在我的單元測試中,我希望能夠用模擬元素替換元素併爲原始元素的方法提供存根。如何替換聚合物中的元素和存根方法
例如,假設我的組件的模板是這樣的:
<template>
<my-other-element id="myOtherElement"></my-other-element>
</template>
讓後來在我的元素說,我做這樣的事情:
myMethod: function() {
this.$.myOtherElement.foo();
}
當我寫單元測試對於我的元素,我想做以下操作:
- 模擬整個
<my-other-element>
- 提供一存根方法
foo()
我已經找到一種方法來實現這一目標,但不知何故它似乎不是很乾淨。我目前的解決方案如下:
var fooStub;
beforeEach(function() {
fooStub = sinon.stub();
replace('my-other-element').with('fake-my-other-element');
document.createElement('fake-my-other-element').constructor.prototype = {
foo: fooStub
};
element = fixture('basic');
});
我想知道是否有更好的方法來實現相同的結果。以某種方式創建一個空元素,以便將prototype
屬性更改爲添加存根似乎不是最好的方法。
而且我知道你也可以做到這一點:
stub('my-other-element', {
foo: fooStub
});
但我更喜歡事先總是嘲笑一切,以確保有從子元素來沒有副作用。
感謝尼。您的第一個選擇是我以前的首選方式。但是,如果你在'ready()'或'attach()'回調中調用了一個來自子組件的方法,那麼你就不能嘲笑這樣的方法。 第二個選項也可以。也許這是最乾淨的。 謝謝 – jhuesos