2017-10-18 39 views
0

我有,我正在讀文件的內容,然後做一些處理的功能:箭扣調用fs.readFileSync(文件)

public static process(filepath: string): string { 
    let fileContent = fs.readFileSync(filepath); 

    // some processing with filecontent 
    // .. 
    //.. 
} 

我寫單元測試它。對於其中一個測試,我想要調用fs.readFileSync(filepath)來返回一些我想要設置的內容。有沒有辦法nock調用fs.readFileSync(文件路徑)?

我開始創建一個sinon.stub爲:

sinon.stub(fs, 'readFileSync'); 

但是,它返回我一個錯誤:

TypeError: Cannot read property 'sections' of undefined 

回答

0

這是因爲'readFilesync("test.css")'不是有效的方法名。

var readFileSyncMock = function(fileName) { 
    var mockFileContents = "blah blah blah"; // This can be anything 
    return mockFileContents; 
}; 

sinon.stub(fs, 'readFileSync', readFileSyncMock); 
+0

亞倫,你可以詳細說明你是如何創建readFileSyncMock的? – user1892775

+0

readFileSyncMock只是你定義的一個函數。它可以是任何東西。在這個測試的情況下,你會希望它返回「test.css」文件通常返回的任何數據。我會更新我的答案。 –

+0

我嘗試了你的建議,但我得到這個錯誤:SyntaxError:在位置0的JSON意外的令牌b(我認爲它抱怨文本的字符,我們當然返回 – user1892775