2016-07-18 36 views
1

這讓我困擾了一會兒。我在同一個文件中有兩個函數。茉莉花 - 間諜功能,在同一個文件中調用

//fun.ts 

export function fun1(){ 
    let msg = fun2(); 
    return msg; 
} 

export function fun2(): string{ 
    return "Some message"; 
} 

我有一個打印fun2並打電話給fun1的打字稿規範。

//fun.spec.ts 

import * as Fun from 'fun'; 

describe('Stubing',() => { 
    it('should stub the return value',() => { 
     spyOn(Fun, 'fun2').and.returnValue("A different message"); 

     expect(Fun.fun1()).toEqual("A different message") 
    }); 
}); 

但是當我運行規範,輸出我得到的是

Failures: 
1) Stubing should stub the return value 
1.1) Expected 'Some message' to equal 'A different message'. 

我寫的測試中打字稿,然後我有一個大口腳本成功transpiles並運行茉莉規格。一切正常,唯一無法解釋的是爲什麼間諜不工作。一個解釋將不勝感激。

+0

我無法重現此。如果添加'expect(Fun.fun2())。toEqual(「另一個消息」)''測試通過了嗎? – nickflynn

+0

我更新了問題以反映您的評論。 – carchase

回答

0

我終於明白了這一點。在fun.ts中,我直接調用fun2對象,但是我的Jasmine規範無法訪問該對象。 Jasmine規範可以訪問的唯一對象是exports對象。如果我想讓間諜工作,我需要在exports對象上調用fun2。

//fun.ts 
export function fun1(){ 
    let msg = exports.fun2(); 
    console.log(msg); 
} 

export function fun2(): string{ 
    return "Some message"; 
} 

現在,當規範執行我看到

. 
1 spec, 0 failures