2017-10-18 74 views
0

我目前正在構建一個Angular庫,我希望能夠運行一些測試。在遵循these指示之後,我設法正確地設置了一切,並且實際上能夠運行我的測試。爲角庫設置Karma

主要問題

雖然一切運行正常尷尬的事情發生了。當我在.ts文件旁邊運行npm test時,會生成一個.js文件。正常情況下,所有d.ts和一個大.js文件進入使用庫使用項目的dist文件夾中。那麼是否有人知道從哪裏可以生成這些JavaScript文件,以及是否確實需要這些文件,因爲所有這些代碼已經存在,可以在dist文件夾中說。

獎金問題

不與上述一樣重要,所有的測試結果被顯示在終端,而瀏覽器僅顯示:

噶V1.4.1 - 連接 鉻61.0。 3163(Mac OS X 10.12.6)空閒

那麼是否有一個很好的修復方法來顯示我的測試,就像angular-cli開箱即用?

注意在做完作業後,我沒有發現網上有相關的東西,我也不想上傳一堆不愉快的jsons。如果有人對這個問題的方向有一個想法,我會很樂意包含代碼。 karma.config.js

module.exports = function(config) { 
    config.set({ 
    basePath: '', 
    frameworks: ['jasmine', 'karma-typescript'], 
    files: [ 
    'init-test-bed.spec.ts', 
    'src/**/*.ts' 
    ], 
    exclude: [ 
    ], 
    preprocessors: { 
     '**/*.ts': ['karma-typescript'] 
    }, 

    karmaTypescriptConfig: { 
     bundlerOptions: { 
     entrypoints: /\.spec\.ts$/, 
     transforms: [ 
     require('karma-typescript-angular2-transform') 
     ] 
    }, 

    compilerOptions: { 
     lib: ['ES2015', 'DOM'] 
    } 
}, 
    reporters: ['progress', 'karma-typescript'], 
    port: 9876, 
    colors: true, 
    logLevel: config.LOG_INFO, 
    autoWatch: true, 
    browsers: ['Chrome'], 
    singleRun: false, 
    concurrency: Infinity 
}) 
} 

tsconfig.json

{ 
    "compilerOptions": { 
    "baseUrl": "./src", 
    "experimentalDecorators": true, 
    "moduleResolution": "node", 
    "rootDir": "./src", 
    "target": "es5", 
    "typeRoots": [ 
     "node_modules/@types" 
    ], 
    "lib": [ 
     "es2015", 
     "dom" 
    ], 
    "skipLibCheck": true, 
    "types": [ 
     "jasmine", 
     "node" 
    ] 
    } 
} 

最後test運行該腳本

0123:

this

編輯生成我的圖書館的基本結構

"test": "tsc && karma start" 
+0

你使用角度cli嗎?你能分享你的業力配置文件嗎?並且當你運行'npm test'時,在你的package.json文件中執行的命令是什麼 –

+0

@AirirDhaDas我使用角度cli來運行庫的應用程序,而不是庫。對於文件看看我的編輯。 – Thodoris

+0

看到我的回答,你沒有使用'@ angular/cli'框架,所有'ts'文件都是單獨編譯的。所以在你的tsconfig.josn中加入'outDir':「../ out-tsc/spec」應該把所有的ts文件編譯成js文件並把它加入到一個文件夾中,你也可以放入一個文件。在google中搜索該選項 –

回答

1

由於您的打字稿配置,您正在爲每個.ts文件獲取.js文件。您可以在tsconfig.json中更改您的配置以告知編譯器寫入單個文件或在文件夾中並在其中添加所有腳本。

"outDir": "../out-tsc/spec" - >會將所有輸出javascript文件添加到一個文件夾中。

對於第二個問題,當內部運行karma時,它運行webdriver並連接到瀏覽器。這就是您看到localhost:9876或類似網址在右側打開調試按鈕的原因。

當webdriver運行時,您還可以調試瀏覽器中的任何錯誤情況等等。

+0

因此,''outDir「:」../ out-tsc/spec「'。代替''rootDir「:」./src「,解決了我的主要問題。 :) 儘管如此,我的第二個問題仍然存在(我想,如果我研究'webdriver'有點可能會解決),除了我提到的原始問題之外,爲什麼瀏覽器不顯示任何內容。無論如何,非常感謝您的明確答案,並且非常詳細。 – Thodoris

+0

點擊調試按鈕,它將打開一個帶有調試的新標籤。然後轉到開發人員模式並找到一個文件並放置一個斷點和刷新頁面。所以當你的測試用例達到這一點時,它會暫停執行,你可以調試。這是基本的,它也有其他的設施 –