2017-05-17 61 views
0

私は、文字列を引数として期待し、その文字列がURLのGetパラメータとして設定されているかどうかをチェックし、設定されている場合は、そのパラメータの値。擬似コードのいくつかの並べ替えでは、その関数の

A本当に簡易版は、私はこの機能が異なるURLのために返すかをテストする必要があるジャスミンには、この

function getParameterValueByName(parameterName) { 
 
    
 
    url = $window.location.href; 
 
    
 
    if (parameterName is in url) { 
 
    
 
    return THE VALUE FROM parameterName; 
 
    
 
    } 
 
    
 
}

のように見えます。私は$window.location.hrefの異なる値で複数のテストを実行する必要があります。しかし、模擬する方法$window.location.href

+++++

私はついにこれを行う方法を見つけました。私はちょうどこのスニペットを追加しなければならなかった。このURLを変更するたびに、新しい記述ブロックが作成されます。

beforeEach(module('myApp', function ($provide) { 
 
     $provide.value('$window', {location: {href: 'https://www.example.com?foo=bar&foo2=bar2'}}); 
 
}));

+0

'$ window'オブジェクトを作成し、' location'プロパティを追加すると、 href'プロパティを 'location'に設定します。あなたのコードは1つの値しか得られないので、それが存在することを確認する必要があります。次に、関数をテストするために必要な値に値を設定できます。 – GillesC

+0

私はこの権利を理解しているかどうかは分かりませんが、提案したようなオブジェクトを作成するだけで、機能ジャスミン内部でカルマが実行されているlocalhost URLが使用されます。 – mkoala

答えて

1

は、これを達成するための方法の山がありますが、私は最善の方法は、ウィンドウ自体のために小さな工場を作ることであろうと言うだろう:

function getParameterValueByName(parameterName) { 

    url = getWindow().location.href 

    if (parameterName is in url) { 

    return THE VALUE FROM parameterName; 

    } 

function getWindow(){ 
return $window.location.href; 

} 

そして、それを嘲笑:

function getWindow(){ // in your test 
return { 
    location:{ 
     href:"What ever mock href u want" 
    } 
    } 

} 
+0

もっと正確になりますか?このモックをどこに追加する必要がありますか?また、私は 'url = getWindow()。location.href'は' url = getWindow(); 'でなければならないと思います。 – mkoala

関連する問題