2017-05-08 42 views
1

我有一個使用CLI生成的Angular 4項目,我試圖使測試工作。我有Karma.conf在我的項目的根目錄:Karma無法在我的angular-cli應用程序中找到我的測試

module.exports = function (config) { 
    config.set({ 
    basePath: '', 
    frameworks: ['jasmine', 'angular-cli'], 
    plugins: [ 
     require('karma-jasmine'), 
     require('karma-chrome-launcher'), 
     require('karma-remap-istanbul'), 
     require('angular-cli/plugins/karma') 
    ], 
    files: [ 
     { pattern: './src/test.ts', watched: false } 
    ], 
    preprocessors: { 
     './src/test.ts': ['angular-cli'] 
    }, 
    mime: { 
     'text/x-typescript': ['ts','tsx'] 
    }, 
    remapIstanbulReporter: { 
     reports: { 
     html: 'coverage', 
     lcovonly: './coverage/coverage.lcov' 
     } 
    }, 
    angularCli: { 
     config: './angular-cli.json', 
     environment: 'dev' 
    }, 
    reporters: config.angularCli && config.angularCli.codeCoverage 
       ? ['progress', 'karma-remap-istanbul'] 
       : ['progress'], 
    port: 9876, 
    colors: true, 
    logLevel: config.LOG_INFO, 
    autoWatch: true, 
    browsers: ['Chrome'], 
    singleRun: false 
    }); 
}; 

,這裏是位於我src文件夾我的test.ts:

declare var __karma__: any; 
declare var require: any; 

__karma__.loaded = function() {}; 

getTestBed().initTestEnvironment(
    BrowserDynamicTestingModule, 
    platformBrowserDynamicTesting() 
); 
const context = require.context('./', true, /\.spec\.ts$/); 
context.keys().map(context); 
__karma__.start(); 

我的文件夾結構是:

+---app 
| +---class 
| +---components 
| +---services 
| \---templates 
+---assets 
| \---images 
\---environments 

因此,在我的組件中,我創建了一個名爲feeds.component.spec.ts的測試,它與一個名爲feeds.component.ts的組件相關聯。

我的Windows控制檯輸出如下:

Unable to find "@angular/cli" in devDependencies. 

The package "angular-cli" has been deprecated and renamed to "@angular/cli". 

Please take the following steps to avoid issues: 
"npm uninstall --save-dev angular-cli" 
"npm install --save-dev @angular/[email protected]" 

08 05 2017 08:33:12.674:WARN [karma]: No captured browser, open http://localhost 
:9876/ 
08 05 2017 08:33:12.687:INFO [karma]: Karma v1.2.0 server started at http://loca 
lhost:9876/ 
08 05 2017 08:33:12.688:INFO [launcher]: Launching browser Chrome with unlimited 
concurrency 
08 05 2017 08:33:12.897:INFO [launcher]: Starting browser Chrome 
08 05 2017 08:33:17.033:INFO [Chrome 58.0.3029 (Windows 10 0.0.0)]: Connected on 
socket /#tif1xw_35N5kuco6ACBA with id 3123123 

和因果報應調試控制檯只是輸出Skipped 0 tests所以沒有測試正在啓動。

奇怪的是,我可以啓動那些位於我template文件夾的默認測試:通過註釋test.ts

Chrome 58.0.3029 (Windows 10 0.0.0): Executed 3 of 3 (3 FAILED) (0 secs/0.159 
Chrome 58.0.3029 (Windows 10 0.0.0): Executed 3 of 3 (3 FAILED) ERROR (0.536 sec 
s/0.159 secs) 

在我karma.conf.js我還試圖「逼迫」測試:app.component.spec.ts圖案和硬編碼我的組件:

files: [ 
    //{ pattern: './src/test.ts', watched: false }, 
    { pattern: 'app/components/feeds.component.spec.ts', included: true, watched:false } 
], 

但這輸出以下:

Uncaught SyntaxError: Unexpected token import 
at src/app/components/feeds.component.spec.ts:1 

爲什麼我的components測試未啓動?

+0

同樣的問題在這裏,任何解決方案? –

回答

1

請採取以下措施,以避免問題:

 
    npm uninstall --save-dev angular-cli 
    npm clean 
    npm install --save-dev @angular/[email protected] 

你也應該這樣做全球。

0

對於NPM 5,我通過解決這個問題:

  • 刪除package-lock.json;
  • 運行npm cache clean --force;
  • package.json(我有@ngtools)刪除任何不必要的依賴關係;
  • 使用ncu更新其餘依賴關係,並再次運行npm i

我確實在打印機2.4.x之後出現了一些問題,並恢復到2.3.4,但這可能會在幾天內解決;現在值得一提。

相關問題