2017-06-27 18 views
2

私はJSメソッドを偵察しています。私はメソッドの実際の引数に基づいて別のものを返すしたい。私はcallFakeを試して、引数[0]を使って引数にアクセスしようとしましたが、引数[0]は定義されていません。これは、ここで提案されジャスミンスパイは、引数に基づいて異なる値を返す

spyOn(testService, 'testParam').and.callFake(function() { 
    var rValue = {}; 
    if(arguments[0].indexOf("foo") !== -1){ 
     return rValue; 
    } 
    else{ 
     return {1}; 
    } 
})   

- - は、ここでは、コードですAny way to modify Jasmine spies based on arguments?

しかし、それは私のために動作しません。 :(それが問題の原因ではないのですけれども、引数の

答えて

2

使用はうまく動作するはずです。また、サイドノートにあなたがテスト - の下にあなたの全体のオブジェクトを貼り付けることができます。

ここでは、私はそれを使用する方法である。それを参照してください。動作中here

var testObj = { 
    'sample': "This is a sample string", 
    'methodUnderTest': function(param) { 
    console.log(param); 
    return param; 
    } 
}; 

testObj.methodUnderTest("You'll notice this string on console"); 

describe('dummy Test Suite', function() { 
    it('test param passed in', function() { 
    spyOn(testObj, 'methodUnderTest').and.callFake(function() { 
     var param = arguments[0]; 
     if (param === 5) { 
     return "five"; 
     } 
     return param; 
    }); 
    var val = testObj.methodUnderTest(5); 
    expect(val).toEqual('five'); 
    var message = "This string is not printed on console"; 
    val = testObj.methodUnderTest(message); 
    expect(val).toEqual(message); 
    }); 
}); 
関連する問題