我的AngularJS(1.7.x)应用程序有一个自定义过滤器,我想围绕它编写测试,因此我决定使用Jest执行此任务。
我的主要问题是,随着我遵循this tutorial by Curt,我正在努力正确地获取要在测试中加载的过滤器(该过滤器没有外部依赖性,因此我认为这是引入单元测试的主要目标)安全带。
对于初学者来说,以下是针对此问题的过滤器的简化版本:
angular.module('app.module').filter('takeTheThing', () =>
function (parameter1) {
return `${parameter1} thing!`;
}
);
而且,在按照上述教程操作并阅读了another SO question specific to testing AngularJS filters之后,我尝试了以下but receive a cryptic error message from Angular about it的所有可能的简单测试文件版本:
require('../node_modules/angular/angular.min.js');
require('../node_modules/angular-mocks/angular-mocks.js');
//Commenting or un-commenting this, results in module-related injector errors:
//require('./takeTheThing.filter.js');
describe('The thingerizer', () => {
let $filter;
beforeEach(angular.mock.module('app.module'));
//Injecting this specifically, or _$filter_ still errors:
beforeEach(inject(takeTheThingFilter => {
$filter = takeTheThingFilter;
}));
//Injecting here instead of in the beforeEach, same issue
it('should give me something', () => {
//Calling the specific filter or thru the Angular $filter... Same
const actual = $filter(1);
expect(actual).toEqual('1 thing!');
});
});
我要拔头发了,但是关于测试设置(特别是如何“正确”加载应用程序而不用全猪加载整个应用程序),我缺少一些基本知识。有什么作用?
AngularJS:1.7.5
角Mo:1.7.6
笑话:23.6.0(我正在使用gulp-jest
,但是即使我直接从jest
文件夹中调用bin
,我也会得到完全相同的错误,因此我省略了大部分这些详细信息在这里