Aurelia单元测试-如何模拟自定义解析器
Aurelia Unit Test - How to mock a custom resolver
这是我试图测试的类:
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);
});
基本上,由于我的类正在注入资源的工厂(工厂只允许我在构造时配置注入的依赖项),我正试图传入一个模拟工厂(它将传入一个模仿依赖项)。
我面临的问题是,不知何故,CommonDataCache类正在用它的常规依赖项进行实例化(而不是我嘲笑的依赖项)。不知怎的,aurelia不明白我已经为'DependencyFactory.of(CrudResource)'
分辨率注册了一家模拟工厂。
提前谢谢。
我个人不会在单元测试中使用依赖项注入。我会创建一个mock并将其传递给CommonDataCache
的构造函数。
一旦您开始使用DI系统,您就不再创建单元测试,而是开始创建E2E测试。
相关文章:
- Dojo不解析自定义小部件的模板html中的小部件声明性
- 在自定义mean.io包中使用angular-chart.js作为依赖项
- jQuery自定义验证比较多个输入的序列
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- 在wordpress一定时间后更改自定义字段
- 表达式引擎扩展开发-向呈现的条目添加自定义javascript
- 自定义函数中的光标位置
- 用于检查数组中是否存在元素的javascript自定义方法
- 绑定时将Parsley minlength消息作为选项传递时,未对其进行自定义
- Meteor-添加用户自定义字段的方法不起作用
- 自定义表单验证和提交
- jQuery工具验证器自定义效果-添加&消除影响
- 可以't计算自定义谷歌地图的js
- 谷歌水印未显示在自定义搜索框中
- vaadin:使用自定义布局集成angular js
- 使用浏览器在页面(客户端)上运行自定义JavaScript来模拟点击?怎么做
- Aurelia单元测试-如何模拟自定义解析器
- 如何使用自定义按钮标签模拟禁用按钮
- 在Jasmine中对Angular进行单元测试时,将模拟自定义提供程序注入到提供程序中
- 将自定义数据传递给模拟的JavaScript事件