1. ホーム
  2. javascript

Javascriptでwindow.location.hrefをモックする

2023-08-09 14:14:47

質問

window.location.href を使用する関数のユニットテストがあります。理想的には、この値を渡す方がずっと良いのですが、実装では不可能です。テスト ランナーのページが実際に URL に移動することなく、この値をモック化することが可能かどうか、ちょっと考えています。

  window.location.href = "http://www.website.com?varName=foo";    
  expect(actions.paramToVar(test_Data)).toEqual("bar"); 

ユニットテストフレームワークにjasmineを使っています。

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

ローカルコンテキストをシミュレートし、独自のバージョンの windowwindow.location オブジェクト

var localContext = {
    "window":{
        location:{
            href: "http://www.website.com?varName=foo"
        }
    }
}

// simulated context
with(localContext){
    console.log(window.location.href);
    // http://www.website.com?varName=foo
}

//actual context
console.log(window.location.href);
// http://www.actual.page.url/...

もし with を使うと、すべての変数 ( window を含む)すべての変数は、まずコンテキストオブジェクトから、 そして存在しない場合は実際のコンテキストから探されます。