私がangular 6コンポーネントに何らかの値を返すメソッドtest
があるとしましょう:
_import { doSomething } from './helper';
@Component({
...
})
export class AppComponent {
test() {
const data = doSomething(1);
return data.something ? 1: 2;
}
}
_
doSomething
は単純なヘルパー関数です。
_export function doSomething() {
return { something: 1 };
}
_
単体テストでこの関数をモックまたはスパイすることは可能ですか?または、コンポーネントのアプローチを変更する必要がありますか?
注意してください:doSomething()
はlodash関数、const、クラスなどです。この例をできるだけシンプルにしようとしました。
私が試したもの:
関数は何にも接続されていないため、SpyOn
は機能しません
モック関数を_TestBed.configureTestingModule
_のimports
配列にインポートすると、_Unexpected value 'doSomething' imported by the module 'DynamicTestModule'. Please add a @NgModule annotation.
_が得られます
サービスの作成は機能しますが、インポートされた各機能のサービスを作成する必要があるのは愚かなことです
仕様ファイルでヘルパーを次の方法でインポートします。
import * as helper from './helper';
また、it()でヘルパーオブジェクトをスパイし、要求された値を返すことができます。
spyOn(helper, 'doSomething').and.returnValue({});