2013-08-23 100 views
5

我對TypeScript很陌生,試圖爲我的TypeScript代碼庫設置一些單元測試。問題是我的代碼依賴於其他人的工作,所有這些引用都是以硬編碼的相對路徑的形式完成的,如「...... \ somefile.d.ts」。在進行單元測試時,我想僞造一些依賴項,但不知道如何讓TypeScript取代我的Fakes而不是硬編碼的參考文件。更好的打字稿文件參考

我的問題是:有沒有辦法在源代碼中硬編碼參考路徑?在TypeScript中是否有像預處理器或宏這樣的東西,還是我可以使用項目系統來幫助解決依賴關係,而不是在源代碼中對它們進行硬編碼?

回答

4

退房咕嚕-TS參考文件的生成:https://github.com/basarat/grunt-ts#reference-file-generation

你可以做的是有獨立的目標,一個用於開發,一個用於測試:

dev: {       
     src: ["app/**/*.ts", "!app/**/*.spec.ts"], // Exclude your spec files 
     reference: "./app/reference.ts", 
     out: 'app/out.js',   
    }, 
    test: {       
     src: ["app/**/*.ts"], // Include all files 
     reference: "./app/reference.ts", 
     out: 'app/out.js',   
    }, 

現在你只從所有參考app/reference.ts你的文件。當你想運行測試時,建立測試,當你想發佈/開發dev的開發。

還檢查了這個視頻教程:http://www.youtube.com/watch?v=0-6vT7xgE4Y&hd=1

+0

Node.js在我們的工作環境中不存在。我想到了手動生成一個包含所有依賴關係的reference.ts文件,並在我所有的源代碼中引用這個文件。但仍然有一些共享文件不在我的控制之下,我不能用這種方法來修復它們。 –

3

不必加載不同的文件你考慮使用測試或間諜框架,以換出一個測試實施的實施?

在我們的TypeScript項目中,我們使用茉莉花間諜(https://github.com/pivotal/jasmine/wiki/Spies,http://tobyho.com/2011/12/15/jasmine-spy-cheatsheet/)來僞造依賴關係。我們正常加載主源代碼,然後使用createSpyObj和spyOn函數用我們測試文件中定義的新TypeScript替換依賴項。

使用這種方法,您不需要對主要源代碼或包含路徑進行任何修改 - 所有操作都在測試文件中完成。