1
私はAngular2/Ionic2 Appで作業しています。私はややこのようになります方法をテストしようとしています:ジャスミン:宣言された変数を含むメソッドをテストする方法
goToFoo(id : number) {
let result = this.someService.initialize();
if (result.hasError == false) {
switch (result.startPage) {
case START_PAGES.OTHER_PAGE:
this._nav.setRoot(OtherPage);
break;
case START_PAGES.FOO:
this._nav.setRoot(FooPage);
break;
default:
return false;
}
}
}
私はこのエラーを取得し、文の「場合」を指している:TypeError: 'undefined' is not an object (evaluating 'result.hasError')
ここでは、私が試したものです:
const mockResult = {
hasError(){}
}
it("should open foo page", inject((omitted)) => {
spyOn(mockResult, "hasError");
const mockId = 123;
const fooCall = Page.goToFoo(mockId);
expect(mockResult.hasError).toHaveBeenCalled();
expect(fooCall).toEqual(this._nav.setRoot(FooPage));
}));
を
変数を初期化して使用するメソッドをテストするより良い方法があると思われます。私はmockResultを 'result'に正しく接続していません。何か案は?
私は本当に内部状態をテストするつもりはありませんが、テストエラーは私が何か他のものをテストするのを妨げています。 'result = this.someService.initialize();'の 'result 'はテストコードでは認識できません。それは定義されていません。 – jhhoff02
次に動作させるためにいくつかの模擬' SomeService'を提供する必要があります。さもなければ、あなたはそれをテストすることができません。 –
それは提供されていますが、それ以降は何をするべきかわかりません。私は 'const testResult = SomeService.initialize();のようなものを考えていました。 expect(testResult).toHaveBeenCalled(); 'これはまだ結果が未定義のためエラーには影響しません – jhhoff02