[解決済み] jest.fn()の値はモック関数またはスパイである必要があります。
2022-03-13 13:12:15
質問
button-actionsというモジュールに、ユーザーが戻るボタンをクリックしたときに呼び出される関数があります。backButtonActionsメソッドを直接テストしたいのですが、呼び出されるbackButtonActions内のleaveAppとdisplayByIdメソッドをモックアップする必要があります。
以下は私の button-actions.js のファイルメソッドです。
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
関数は、jasmineの
spyOn
メソッドを使うか、Jest の
jest.spyOn
メソッド
https://facebook.github.io/jest/docs/jest-object.html#jestspyonobject-methodname
関連
-
[解決済み] jQueryのpreventDefault()が発動しない
-
[解決済み] jQueryの「exists」関数はありますか?
-
[解決済み] 選択オプション「selected」を値で設定する
-
[解決済み] jQuery に何かを実行する前にすべての画像の読み込みを待つように指示する公式な方法
-
[解決済み] jQueryでtextareaの値を設定する
-
[解決済み] jQueryを使用してテキストボックスの値を取得するには?
-
[解決済み] チェックボックスがチェックされた場合のjQuery
-
[解決済み] jQuery removeClass ワイルドカード
-
[解決済み] jQueryで、ある要素を他の要素に対して相対的に配置するには?
-
[解決済み] Jqueryのコードはヘッダーとフッターのどちらに入れるべきですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Select <a> which href ends with some string
-
[解決済み] jQuery UI DatePicker - 日付フォーマットの変更
-
[解決済み] 変更イベントでradioを使用するには?
-
[解決済み] 動的に生成された要素でクリックイベントが動作しない [duplicate]
-
[解決済み] jQueryがどのバージョンで読み込まれているかを確認するには?
-
[解決済み] jQueryの複数要素の同一クリックイベント
-
[解決済み] jQueryでloading spinnerを表示するには?
-
[解決済み] jQueryの検証:デフォルトのエラーメッセージを変更する
-
[解決済み】jQueryがリクエストボディに有効なjsonを投稿する。
-
[解決済み】フォームのhiddenフィールドにjQueryの".val() "を使って値を設定してもうまくいかない。