gpt4 book ai didi

javascript - Aurelia 单元测试 - 如何模拟自定义解析器

转载 作者:行者123 更新时间:2023-12-03 07:18:59 24 4
gpt4 key购买 nike

这是我要测试的类:

import {inject} from 'aurelia-framework';
import {CrudResource, DependencyFactory} from 'utils';

let commonData = {};
@inject(DependencyFactory.of(CrudResource))
export class CommonDataCache {
constructor(crudResourceFactory) {
this.crudResource = crudResourceFactory('/Common');
}
data() {
return Object.keys(commonData).length > 0 ? commonData :
this.crudResource.get().then(response => {
commonData.clientEntities = response;
return commonData;
});
}
}

我正在尝试编写此测试(为简洁起见,仅发布相关部分):

beforeEach(() => {
container = new Container();

container.registerInstance('DependencyFactory.of(CrudResource)', new CrudResourceFactoryMock());

templatingEngine = container.get(TemplatingEngine);

cdc = templatingEngine.createViewModelForUnitTest(CommonDataCache);
});
基本上,由于我的类正在注入(inject)资源工厂(该工厂只允许我配置注入(inject)的构造依赖项),因此我尝试传递一个模拟工厂(它将传递一个模拟依赖项)。

我面临的问题是,CommonDataCache 类正在以其常规依赖项(而不是我的模拟依赖项)进行实例化。不知何故,aurelia 不明白我已经为 'DependencyFactory.of(CrudResource)' 分辨率注册了一个模拟工厂。

提前致谢。

最佳答案

我个人不会在单元测试中使用依赖注入(inject)。我将创建一个模拟并将其传递给 CommonDataCache 的构造函数。

一旦开始使用 DI 系统,您就不再创建单元测试,而是开始创建 E2E 测试。

关于javascript - Aurelia 单元测试 - 如何模拟自定义解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36287819/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com