[英]Injecting filter into unit test Angular Typescript
I am having trouble injecting the Angular built-in orderByFilter. 我在注入Angular内置的orderByFilter时遇到问题。 Any suggestion would be helpful.
任何建议都会有所帮助。 Thanks in advance!
提前致谢! I am getting this error:
我收到此错误:
TypeError: undefined is not a constructor (evaluating 'this.orderBy(this.registrationList, this.registrationSort, this.sortReverse)
TypeError:未定义不是构造函数(评估'this.orderBy(this.registrationList,this.registrationSort,this.sortReverse)
Here is my component: 这是我的组件:
import { RegistrationModel } from "../models/RegistrationModel";
import { IRegistration } from "../../../services/interfaces/IRegistration";
export class RegistrationsComponent implements ng.IComponentOptions {
public static componentName = "registrations";
public template: string = require("./Registrations");
public controller = RegistrationsController;
}
export class RegistrationsController {
static $inject = ["RegistrationModel", "orderByFilter"];
public registrationsList: IRegistration[] = [];
public registrationSort: string;
public sortReverse: boolean = false;
constructor(
public RegistrationModel: RegistrationModel,
public orderBy
) {}
public sortRegistrations() {
this.registrationsList = this.orderBy(this.registrationsList, this.registrationSort, this.sortReverse);
}
}
Here is my unit test: 这是我的单元测试:
import "angular-mocks";
import { RegistrationsComponent, RegistrationsController } from "./RegistrationsComponent";
import { IRegistration } from "../../../services/interfaces/IRegistration";
describe("Registrations", () => {
var registrationModelMock = {};
var orderBy;
beforeEach(angular.mock.module("onboardingTestApp", ($provide: any) => {
$provide.service("RegistrationModel", () => registrationModelMock);
$provide.service("orderByFilter", () => orderBy);
}));
var registrationList = [
{
Created: "2016-05-13",
Email: "test1@test.com",
},
{
Created: "2017-03-13",
Email: "test2@test.com",
},
]
var registrationController = new RegistrationsController(<any>registrationModelMock, orderBy);
it("should sort the registrations", () => {
registrationController.registrationsList = <any>registrationList;
registrationController.registrationSort = "Email";
registrationController.sortReverse = true;
registrationController.sortRegistrations();
expect(registrationList[0].Email).toBe("test2@test.com");
});
});
There is no 'orderBy' pipe in angular 2. They do have other pipes like currency, uppercase, but they removed orderBy. 角度2中没有'orderBy'管道。它们确实有其他管道,例如Currency,大写字母,但它们删除了orderBy。 They removed because of the performance issue from previous angular version.
由于性能问题,它们已从以前的角度版本中删除。
Here is the the documentation that states that. 这是说明该情况的文档。 https://angular.io/docs/ts/latest/guide/pipes.html Read the appendix part that explains lot more about this.
https://angular.io/docs/ts/latest/guide/pipes.html阅读附录部分,该部分将对此进行详细说明。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.