我是Jasmine的新手并假设使用.not.toBeDefined()或.toBeUndefined()匹配你可以检查变量是否undefined:
describe('toBeDefined', function() {
it('should be defined', function() {
var obj = {};
expect(obj).toBeDefined(); // Passes
});
it('should not be defined using .not.tobeDefined()', function() {
//var obj = {};
expect(obj).not.toBeDefined(); // Fails // ReferenceError: obj is not defined
});
it('should not be defined using .tobeUnefined()', function() {
//var obj = {};
expect(obj).toBeUndefined(); // Fails // ReferenceError: obj is not defined
});
});
Run Code Online (Sandbox Code Playgroud)
我完全知道这会在代码中失败,但我假设使用这些匹配,它不会.我只是使用这些错误,还是不可能写一个规格来检查是否有什么undefined?
我在一个方法上进行间谍活动的例子是失败,"已经调用了预期的间谍handle_click".什么时候应该通过.但是,我收到控制台日志"Foo handle_click called!",所以我知道它正在调用.
Foo.js
function Foo() {
this.$btn = $('<a href="#">Foo</a>');
this.$btn.on('click', this.handle_click);
};
Foo.prototype.handle_click = function(evt) {
evt.preventDefault();
console.log('Foo handle_click called!');
};
Run Code Online (Sandbox Code Playgroud)
Foo_spec.js:
it('should be called when trigger is clicked', function() {
var foo = new Foo();
spyOn( foo, 'handle_click' ).andCallThrough();
foo.$btn.click();
expect( foo.handle_click ).toHaveBeenCalled();
});
Run Code Online (Sandbox Code Playgroud)
我使用的是jasmine-1.2.0,jasmin-html和jasmine-jquery,但不是jasmine-sinon; 至少我不认为它捆绑在那里.任何帮助深表感谢!
更新 以下解答.但是,我想在jQuery插件的情况下记录解决方案:
Foo.js:
function Foo() { ... }
Foo.prototype.handle_click = function(evt) { ... }
$.fn.foo = function(options) {
return new Foo(this, options || {});
};
$.fn.foo.prototype = Foo.prototype;
Run Code Online (Sandbox Code Playgroud)
Foo_spec.js:
it('should be …Run Code Online (Sandbox Code Playgroud) 我很想知道教程网站"Rails for Zombies"是如何完成他们的实验室的.用户需要通过在命令行提示符(似乎是)中输入ruby代码来回答一系列实验问题,以完成每个实验.提交后确定他们是否可以进入下一个实验室问题.
通过Firebug偷看DOM,看来他们正在使用canvas标签 - 我假设这是命令行,对吧?另外,在Ruby方面,他们如何确保输入的代码是回答问题所需的代码?或者他们只是使用RSpec/Cucumber进行测试设置?
任何帮助深表感谢.:)