[Jest] DIしたオブジェクトのメソッド呼び出しをテストする
4552 ワード
こんにちは、スープです。
医療テックのスタートアップのお手伝いをしています。
DIしたオブジェクトのメソッド呼び出し方法を調べました。
わかりやすくするために、シンプルな例を示します。
export class CarFactory {
constructor(private logger: ILogger) {}
public create(name: string): void {
this.logger.log(`creating ${name} car...`)
}
}
このとき、コンストラクターインジェクションされた logger
の log
が呼ばれていることをテストしてみます。
describe('CarFactory', () => {
test('create', () => {
const logger = new Logger();
const carFactory= new CarFactory(logger);
const spy = jest.spyOn(logger, 'log');
// オプショナルで、Logger.log の挙動を指定したい場合は mockImplementation を呼ぶ
spy.mockImplementation(() => console.log('log is being called'));
const carName = 'Toyota'
carFactory.create(carName);
// 呼び出されていることをチェック
expect(logger.log).toHaveBeenCalled();
// 想定通りの引数で呼び出されていることをチェック
expect(logger.log).toHaveBeenCalledWith(`creating ${carName} car...`);
// これでリセットできる
spy.mockRestore();
});
});
参考
Author And Source
この問題について([Jest] DIしたオブジェクトのメソッド呼び出しをテストする), 我々は、より多くの情報をここで見つけました https://qiita.com/souppower/items/0abe143650051d733de9著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .