[解決済み] Jasmineを使って、オブジェクトを持たない関数をスパイする
2022-04-22 07:53:19
質問
私はJasmineを使い始めたばかりの初心者です。私は、どのオブジェクトにも関連しない(つまりグローバルな)関数をたくさん含むライブラリjsファイルを持っています。これらの関数を監視するには、どうすればよいのでしょうか?
オブジェクトとしてwindow/documentを使用してみましたが、関数が呼び出されたにもかかわらず、スパイが機能しませんでした。また、次のように偽のオブジェクトでラップしてみました。
var fakeElement = {};
fakeElement.fakeMethod = myFunctionName;
spyOn(fakeElement, "fakeMethod");
でテストしてください。
expect(fakeElement.fakeMethod).toHaveBeenCalled();
スパイがうまくいかなかったので、これもうまくいきません。
解決方法は?
関数を定義している場合
function test() {};
とすれば、これと同等である。
window.test = function() {} /* (in the browser) */
だから
spyOn(window, 'test')
が動作するはずです。
そうでない場合も、できるはずです。
test = jasmine.createSpy();
もし、どれもうまくいかない場合は、あなたのセットアップに何か他の問題が起きている可能性があります。
を使用しないと思います。
fakeElement
のテクニックは、舞台裏で起こっていることのために機能します。元のglobalMethodはまだ同じコードを指しています。スパイが行うのはそれをプロキシすることですが、それはオブジェクトのコンテキスト内だけです。もしテストコードがfakeElementを通して呼び出されるようにできればうまくいくでしょうが、その場合はグローバルFNをあきらめることになるでしょう。
関連
-
vueのグローバルがscss(mixin)を導入。
-
[解決済み】Uncaught SyntaxError: JSONの位置0に予期しないトークンuがあります。
-
[解決済み】リソースの読み込みに失敗した:Bind関数でサーバーが500(Internal Server Error)のステータスで応答した【非公開
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] JavaScriptのオブジェクトが空であることをテストするにはどうすればよいですか?
-
[解決済み] JavaScriptのオブジェクトにキーが存在するかどうかをチェックする?
-
[解決済み] jQueryの「exists」関数はありますか?
-
[解決済み】未定義のオブジェクトプロパティを検出する
-
[解決済み】JavaScriptのオブジェクトの長さ
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
fetch ネットワークリクエストラッパーの説明例
-
要素ツリー制御によるvueTreeテーブル
-
Vue+ElementUIによる大規模なフォームの処理例
-
JavaScriptの配列共通メソッド解説
-
vueの補間表現とv-textディレクティブの違いについて
-
Vueのクラススタイルの使い方の詳細
-
[解決済み】ローカルファイルを開くことができません - Chrome: ローカルリソースの読み込みが許可されていない
-
[解決済み] 期待される代入または関数呼び出し: 未使用式なし ReactJS
-
OSSアップロードエラーを解決する: net::ERR_SSL_PROTOCOL_ERROR
-
JavaScriptのgetElementById()メソッド入門