我刚开始使用Jasmine,我能够使用Html中的SpecRunner就好了。但是当我配置Karma时遇到了一个差异:
describe('Calculator', function(){
var obj;
beforeEach(function(){
//initialize object
obj = new Object();
this.addMatchers({
toBeFive: function () {
return {
compare: function (actual, expected) {
return {
pass: actual === 5,
message: actual + ' is not exactly 5'
}
}
};
},
这段代码无法使用SpecRunner.html:
this.addMatchers({
相反,我必须使用它:
jasmine.addMatchers({
这包括specrunner:
<!-- libs... -->
<script type="text/javascript" src="lib/jasmine-2.0.0/jasmine.js"></script>
<script type="text/javascript" src="lib/jasmine-2.0.0/jasmine-html.js"></script>
<script type="text/javascript" src="lib/jasmine-2.0.0/boot.js"></script>
<!-- source files here... -->
<script type="text/javascript" src="../../calculator/calculator.js"></script>
<!-- test files here... -->
<script type="text/javascript" src="spec/calculator/calculator-test.js"></script>
我得到的错误是:
TypeError: Object #<Object> has no method 'addMatchers'
请注意,Karma没有错误,但如果我使用jasmine.addMatchers({确实如此。
答案 0 :(得分:10)
如果你在安装业力后运行npm install karma-jasmine@~0.2.1
,这将使用正确的茉莉花版本(由于新适配器仅在几天前发布,因此默认情况下仍未更新karma以安装正确的版本)
答案 1 :(得分:4)
请参阅此文档https://www.packtpub.com/sites/default/files/downloads/7204OS_The_Future_Jasmine_2_0.pdf
2.0打破了我们做匹配的方式
创建自定义匹配器的新语法Jasmine 2.0带来了一种新方法 创建自定义匹配器。已经完成了很多重构 引擎盖,最重要的变化是内部的Jasmine 使用相同的基础架构来创建自己的内置匹配器。
这是实现这一目标的新方法。
jasmine.Expectation.addMatchers({
toBeAGoodInvestment: function() {
return {
compare: function (actual) {
var pass = actual.isGood();
var what = pass ? 'bad' : 'good';
return {
pass: pass,
message: 'Expected investment to be a '+ what +' investment'
};
}
};
}
});
答案 2 :(得分:4)
我检查了Jasmine文档网站,我了解1.3和2.0之间存在一些重要的区别,这是我们宣布匹配器的方式之一:
基于此文档(http://jasmine.github.io/2.0/custom_matcher.html),没有任何问题:
jasmine.addMatchers({
toBeFive: function () {
return {
compare: function (actual, expected) {
return {
pass: actual === 5,
message: actual + ' is not exactly 5'
}
}
};
});
问题在于业力仍在运行茉莉1.3.1。
这是我检查我正在运行的Jasmine版本的方式:
C:\Users\[UserName]\AppData\Roaming\npm\node_modules\karma-jasmine\lib
:jasmine.version_ = { "major": 1, "minor": 3, "build": 1, "revision": 1354556913 };
我发现有人努力使业力适应Jasmine 2.0.0: