0
次のangularjs
コンポーネントは正常に動作しますが、window.addEventListener('message',
以降のテスト対象は何も見ていません。window.addEventListener関数内のコードをテストする
window
オブジェクトを模擬して、addEventListener
のための独自の実装を提供する必要がありますか?またはスパイして、それが呼ばれていることを確認しますか?
my.component.controller.ts
export class MyComponentController {
constructor() {}
public theEventOccurred(e: any) {
let json = JSON.parse(e.data);
console.log(json.document);
}
public $onInit() {
window.addEventListener('message', (event) => {
this.theEventOccurred(event);
}, false);
}
}
my.component.spec.ts
describe('Component: my',() => {
let $componentController: angular.IComponentControllerService;
let scope: angular.IScope;
beforeEach(inject(
($rootScope: angular.IScope,
_$componentController_: angular.IComponentControllerService) => {
scope = $rootScope.$new();
$componentController = _$componentController_;
}));
describe('Controller: MyComponentController',() => {
it('should log json.document',() => {
let ctrl: any = $componentController('my', { $scope: scope });
ctrl.$onInit();
});
});
});
メッセージイベントで何をしているのかは、サービスにパッケージ化して別々にテストする必要があります。コンポーネントコントローラは、コンポーネントビューのレンダリングに関連するロジックにのみ関係する必要があります。 – georgeawg