ユーザーが戻るボタンをクリックすると呼び出されるbutton-actionsというモジュール内の関数があります。 backButtonActionsメソッドを直接テストしたいのですが、呼び出されるbackButtonActions内でleaveAppメソッドとdisplayByIdメソッドをモックアップする必要があります。
これが私のbutton-actions.js fileメソッドです。
export function backButtonActions( label, page ){ //, page
console.log("LABEL = ", label, " page = ", page);
switch( label ){
case 'step1':
page.leaveApp();
break;
case 'step2':
page.displayById();
break;
}
}
私はテストが初めてなので、非常に単純なものを見逃しているかもしれません。以下は私のtest.jsファイルです
window.$ = require('jquery');
import {backButtonActions} from '../button-actions';
describe('Button Actions', () => {
const page = {}
beforeEach(() => {
page.leaveApp = jest.fn(() => "leave");
page.displayById = jest.fn(() => "Display");
document.body.innerHTML =
'<div>' +
' <button class="btn-back" />' +
'</div>';
$('.btn-back').click((event, label) =>{
backButtonActions( label, page );
});
});
it('backButtonActions requires a string of either "step1" or "step2"', () => {
$('.btn-back').trigger('click', 'step1');
expect(backButtonActions).toBeCalled();
expect(backButtonActions).toBeCalledWith("step1" || "step2");
});
})
上記のテストを実行すると、次のエラーが表示されます。
●ボタンアクション› backButtonActionsには、「ステップ1」または「ステップ2」のいずれかの文字列が必要です
expect(jest.fn())[.not].toBeCalled() jest.fn() value must be a mock function or spy. Received: function: [Function backButtonActions] at Object.<anonymous> (test/js/spec/create/button-actions.test.js:64:50)
これを機能させるために実行する必要がある他のものはありますか?
ジャスミンのbackButtonActions
メソッドまたはJestのjest.spyOn
メソッドを介して、spyOn
関数をスパイする必要があります。
https://facebook.github.io/jest/docs/jest-object.html#jestspyonobject-methodname