簡體   English   中英

將過濾器注入單元測試Angular Typescript

[英]Injecting filter into unit test Angular Typescript

我在注入Angular內置的orderByFilter時遇到問題。 任何建議都會有所幫助。 提前致謝! 我收到此錯誤:

TypeError:未定義不是構造函數(評估'this.orderBy(this.registrationList,this.registrationSort,this.sortReverse)

這是我的組件:

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);
    }
}

這是我的單元測試:

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");
    });
});

角度2中沒有'orderBy'管道。它們確實有其他管道,例如Currency,大寫字母,但它們刪除了orderBy。 由於性能問題,它們已從以前的角度版本中刪除。

這是說明該情況的文檔。 https://angular.io/docs/ts/latest/guide/pipes.html閱讀附錄部分,該部分將對此進行詳細說明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM