2013-07-23 41 views
0

茉莉花具有spyOn功能,但它只是似乎有兩個參數 - 對象和函數的名稱叫:是否可以指定Jasmine的spyOn()中的某些參數返回什麼?

spyOn(foo, 'getBar').andReturn(745); 

因此,舉例來說,如果我叫foo.getBar()我應該得到745

我只是想知道,如果我有一個單元測試,想用兩個不同的參數來模擬兩個不同的調用getBar,會返回兩個不同的結果。

例如說我想嘲笑下面的結果,我怎麼能實現以下目標?

getBar(1) = 700 
getBar(2) = 500 

回答

3

您可以使用andCallFake來實現:

spyOn(foo, 'getBar').andCallFake(function(n) { 
    if (n === 1) { 
    return 700; 
    } else if (n === 2) { 
    return 500; 
    } 

    throw "Invalid input"; 
}); 
相關問題