【问题标题】:How can globally I mock/replace components in integration tests?我如何在全球范围内模拟/替换集成测试中的组件?
【发布时间】:2016-06-04 08:09:37
【问题描述】:
我有一个“嵌套”组件,它发出一个 Web 请求,我正在使用来自另一个组件“父级”的这个组件。
我正在尝试为“父级”编写一些集成测试,但由于“嵌套”组件的 Web 请求失败,因此它们失败了。
我没有模拟请求,只是希望模拟一些“嵌套”功能来阻止网络请求。这很容易通过reopen 实现,但这当然会导致“嵌套”测试失败。
有谁知道我是否可以存根“嵌套”片段,或者使用注册表将“嵌套”替换为扩展类?
【问题讨论】:
标签:
ember.js
qunit
sinon
ember-qunit
【解决方案1】:
要换出一个组件,只是为了单个测试模块的目的,只需注册一个自定义组件来替换原来的(只针对测试模块的范围):
moduleForComponent('component-under-test', 'description', {
integration: true,
beforeEach() {
this.container.registry.register('component:nested-component', NestedComponent.extend({
modifiedFunction() {
}
}));
}
});