2
角度コントローラー用のESクラスがあり、角度モックを使ってジャスミンテストを作成しようとしています。
コンストラクタでは、$ filterをthis.i18n = $ filter( 'i18n)に初期化します。これは基本的に、キー、値を受け取り、キーのローカライズされた値を返すローカライゼーションフィルタです。
私の問題は、クラスのコンストラクタが$フィルタを持ち、後でクラスメソッドで使用されるためです。私のユニットテストは失敗します。どうすれば私のテストが失敗しないように$ filterを使ってテストできますか?私は私がここで
TypeError: this.i18n is not a function
at UsersCtrl.$onInit (test-context.js:35081:41)
at Object.<anonymous> (test-context.js:35031:31)
を取得し、例外がES6クラス
はここclass UsersCtrl {
constructor($filter) {
this.i18n = $filter('i18n');
this.users = [];
}
//Life cycle Hooks: Initialization
$onInit() {
this.users = [
{name: this.i18n('USERS')}
];
}
}
UsersCtrl.$inject = ['$filter'];
angular.module('app', []).controller('UsersCtrl',UsersCtrl);
export default UsersCtrl;
である。ここでカスタムフィルタ
を模擬するために探しています私は
Import UsersCtrl from './users-controller.js';
describe("given a new User Page",() => {
var UserController;
beforeEach(() => {
angular.mock.module('app');
});
describe("when initialising has completed",() => {
beforeEach(() => {
inject(($rootScope, $controller, $filter) => {
const scope = $rootScope.$new();
const filter = $filter
UserController = $controller("UsersCtrl", { $scope: scope, $filter: filter});
});
});
it("then users array for tab content should be empty initially",() => {
const expectedActive = [];
expect(UserController.users).toEqual(expectedActive);
});
});
});
を持つユニットテストです
問題はテストを実行しますが、this.i18n = $ filter( 'i18n)で初期化できないという問題があります。 ould私はテストに$ filterを渡すためにテストを初期化しますか?私は本当にここフィルター
JCTのおかげで、それが役立ちます。魅力的に働いた – looneytunes