我已经使用 Yeoman 安装了 Karma 和 karma-jasmine,如下所示:
$ npm install -g generator-angular
$ mkdir myapp && cd $_
$ yo angular
鉴于
myapp/bower.json
没有将 Jasmine 列为 Bower 安装的前端软件包之一,但 myapp/karma.conf.js
将 Jasmine 列为默认测试框架,我对命令 grunt test
的工作感到惊讶。 (Gruntfile.js
、bower.json
和 karma.conf.js
文件都是作为 yo angular
脚手架过程的一部分创建的。)
仔细检查
myapp/node_modules
软件包后,我意识到 karma-jasmine 并不指向单独安装 Jasmine。 karma-jasmine 插件实际上安装了 Jasmine:
▼ myapp/
▼ karma_jasmine/
▼ lib/
adapter.js
index.js
jasmine.js
鉴于karma-jasmine说它是“Jasmine测试框架的适配器”,我有点惊讶karma-jasmine不需要我们单独安装Jasmine。
以下是使用的各种软件包版本:
您可以通过运行以下 Spec 来了解您正在使用的 jasmine 版本:
describe('Test to print out jasmine version', function() {
it('prints jasmine version', function() {
console.log('jasmine-version:');
console.log(jasmine.version || (jasmine.getEnv().versionString && jasmine.getEnv().versionString()));
});
});
然后在控制台或浏览器中检查 karma 输出。应该是这样的:
LOG: 'jasmine-version:'
LOG: '2.3.4'
正如您已经发现的,jasmine 库包含在 jasmine-runner 插件中。您可以在插件的源代码中找到加载此文件的确切位置:https://github.com/karma-runner/karma-jasmine/blob/master/lib/index.js(第7行)
您可以尝试修改插件,以便可以升级并向 karma 发送拉取请求(请参阅 http://karma-runner.github.io/0.10/dev/contributing.html)
坚持使用 karma-jasmine 中的 jasmine 版本并更新整个软件包是一个更好的选择。 您可以使用以下命令来获取所有已安装软件包的版本:
npm ls
获取已安装的全局包的版本:
npm ls -g
要查看 CDN 上可用的最新版本,请使用:
npm view karma-jasmine version
更新之前,您可以使用以下方式查看 CDN 上的所有版本:
npm view karma-jasmine versions
要安装特定版本:
npm install karma-jasmine@~0.2.2
(0.2.2 是最新可用的)。
这里一个有用的提示是:
npm outdated
这将列出所有过时的依赖项,包括它们的当前版本和最新版本,以便您可以更好地了解应该更新的内容。
之后,
npm install karma@latest jasmine-core@latest
就可以了。