我正在研究Ionic 3应用程序,当我想使用TestBed类时,我遇到了问题。我使用这些命令来创建项目。
ionic start myApp tabs
npm install karma-cli -g
npm install karma --save-dev
npm install jasmine --save-dev
npm install karma-jasmine --save-dev
npm install @types/jasmine --save-dev
npm install jasmine-core --save-dev
npm install ts-node --save-dev
npm install angular-cli --save-dev
我用karma来创建这个karma.conf.js:
module.exports = function(config) {
config.set({
basePath: '',
frameworks: ['jasmine'],
files: [
'src/**/*Spec.js'
],
exclude: [
],
preprocessors: {
},
reporters: ['progress'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
singleRun: false,
concurrency: Infinity
})
}
我用这个内容创建了src / app / pages / home / homeSpec.js文件:
import { TestBed } from '@angular/core';
describe("some tests", () => {
it("True", function () {
expect(true).toEqual(true);
});
});
当我使用karma start时,我得到以下输出:
------------------- without TestBed import ----------------
27 02 2018 23:45:55.793:WARN [karma]: No captured browser, open http://localhost:9876/
27 02 2018 23:45:55.807:INFO [karma]: Karma v2.0.0 server started at http://0.0.0.0:9876/
27 02 2018 23:45:55.808:INFO [launcher]: Launching browser Chrome with unlimited concurrency
27 02 2018 23:45:55.812:INFO [launcher]: Starting browser Chrome
27 02 2018 23:45:57.600:INFO [Chrome 64.0.3282 (Mac OS X 10.13.3)]: Connected on socket ysC5F7d28isYt8oAAAAA with id 47800734
Chrome 64.0.3282 (Mac OS X 10.13.3): Executed 1 of 1 SUCCESS (0.002 secs / 0 secs)
------------------- with TestBed import ----------------
27 02 2018 23:46:04.564:INFO [watcher]: Changed file "/Volumes/JedemaKey/ionic_book/Chapitres/ionic/testtest/myApp/src/pages/home/homeSpec.js".
Chrome 64.0.3282 (Mac OS X 10.13.3) ERROR
{
"message": "An error was thrown in afterAll\nUncaught SyntaxError: Unexpected token {",
"str": "An error was thrown in afterAll\nUncaught SyntaxError: Unexpected token {"
}
Chrome 64.0.3282 (Mac OS X 10.13.3): Executed 0 of 0 ERROR (0.018 secs / 0 secs)
为什么我会收到此错误?如何导入TestBed类?
我得到相同的错误我可以导入另一个类,如下面的代码:
import { Component } from '@angular/core';
// This line works in .ts module in same directory.
describe("Test de la page informations", () => {
it("True", function () {
expect(true).toEqual(true);
});
});
如果我将.ts扩展名提交给文件,我会得到同样的错误...
你有解决方案吗 ?
最后,我在这个Github页面(qazxsw poi)中找到了解决方案。我使用这个命令将jasmine版本降级到2.99.0:
https://github.com/ionic-team/ionic-unit-testing-example/issues/79