1. ホーム
  2. vue.js

[解決済み] Jest + Vuejsでwindow.location.hrefをモックするには?

2022-07-31 20:12:15

質問

現在、私はプロジェクトのためにユニットテストを実装しており、以下のようなファイルがあります。 window.location.href .

これをモック化してテストしたいので、サンプルコードを示します。

it("method A should work correctly", () => {
      const url = "http://dummy.com";
      Object.defineProperty(window.location, "href", {
        value: url,
        writable: true
      });
      const data = {
        id: "123",
        name: null
      };
      window.location.href = url;
      wrapper.vm.methodA(data);
      expect(window.location.href).toEqual(url);
    });

でも、こんなエラーが出ます。

TypeError: Cannot redefine property: href
        at Function.defineProperty (<anonymous>)

いくつかの解決策を試しましたが、解決に至りません。私はこのトラブルから抜け出すためにいくつかのヒントが必要です。Plz help.

どのように解決するのですか?

試してみてください。

global.window = Object.create(window);
const url = "http://dummy.com";
Object.defineProperty(window, 'location', {
  value: {
    href: url
  }
});
expect(window.location.href).toEqual(url);  

その問題については、Jest Issueを見てください。

Jest Issue(ジェスト・イシュー