3 回答

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超6個(gè)贊
我會(huì)用你的模擬任務(wù)覆蓋真實(shí)的任務(wù)來(lái)擴(kuò)展你的測(cè)試文件中的組件。
class TestContainer extends Container {
@task *myTask(): TaskGenerator<Data> {
return someMockData;
}
}
// ...
hooks.beforeEach(function() {
this.owner.register('component:container', TestContainer);
});

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超13個(gè)贊
我不知道有什么方法可以模擬組件中的單個(gè)任務(wù)進(jìn)行測(cè)試。當(dāng)涉及網(wǎng)絡(luò)時(shí),我會(huì)伸手去尋找建立在偽裝者之上的?ember-cli-mirage。Mirage 在處理 ember-data 模型時(shí)非常出色,也可用于處理模擬任何網(wǎng)絡(luò)請(qǐng)求。如果您不使用 ember-data,您可能只想使用偽裝者或調(diào)查非框架?Mirage.js。
通過(guò)模擬網(wǎng)絡(luò)并返回預(yù)制數(shù)據(jù),您將在測(cè)試組件時(shí)對(duì)測(cè)試進(jìn)行相同的控制。我真的很喜歡這種方法,并且發(fā)現(xiàn)它多年來(lái)一直非常可靠和穩(wěn)定。

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超8個(gè)贊
在我的項(xiàng)目中,我確實(shí)有使用 sinon 的任務(wù)存根。它的構(gòu)建方式與你的設(shè)置略有不同,但也許你可能會(huì)得到一些靈感。
所以我在我的組件中有這個(gè)任務(wù)
@(task(function* () {
yield this.exportxls.asXls.perform(someArg);
})) downloadXls;
此方法在服務(wù)中asXls
@(task(function* (mapping) {
// ...
}).drop()) asXls;
然后在我的集成測(cè)試中,我像這樣做存根
this.owner.register('service:exportxls', Service.extend({
init() {
this._super(...arguments);
this.set('asXls', {
perform: sinon.stub()
});
}
}));
在那之后,我可以進(jìn)行常規(guī)檢查
assert.ok(exportService.asXls.perform.calledOnce);
添加回答
舉報(bào)