the*_*ict 92 javascript testing angularjs chai
在本教程中使用chai测试angularjs应用程序时,我想使用"should"样式为未定义的值添加测试.这失败了:
it ('cannot play outside the board', function() {
scope.play(10).should.be.undefined;
});
Run Code Online (Sandbox Code Playgroud)
错误"TypeError:无法读取属性'应该'未定义",但测试通过了"expect"样式:
it ('cannot play outside the board', function() {
chai.expect(scope.play(10)).to.be.undefined;
});
Run Code Online (Sandbox Code Playgroud)
如何让它与"应该"一起工作?
Dav*_*man 76
这是should语法的缺点之一.它的工作原理是将should属性添加到所有对象,但如果返回值或变量值未定义,则没有对象来保存该属性.
该文档提供了一些解决方法,例如:
var should = require('chai').should();
db.get(1234, function (err, doc) {
should.not.exist(err);
should.exist(doc);
doc.should.be.an('object');
});
Run Code Online (Sandbox Code Playgroud)
dan*_*iel 47
should.equal(testedValue, undefined);
Run Code Online (Sandbox Code Playgroud)
正如柴文献中所述
Pet*_*hev 17
测试未定义
var should = require('should');
...
should(scope.play(10)).be.undefined;
Run Code Online (Sandbox Code Playgroud)
测试null
var should = require('should');
...
should(scope.play(10)).be.null;
Run Code Online (Sandbox Code Playgroud)
测试假,即在条件下视为假
var should = require('should');
...
should(scope.play(10)).not.be.ok;
Run Code Online (Sandbox Code Playgroud)
我努力为未定义的测试编写should语句.以下不起作用.
target.should.be.undefined();
Run Code Online (Sandbox Code Playgroud)
我找到了以下解决方案.
(target === undefined).should.be.true()
Run Code Online (Sandbox Code Playgroud)
如果还可以将其写为类型检查
(typeof target).should.be.equal('undefined');
Run Code Online (Sandbox Code Playgroud)
不确定上述是否正确,但确实有效.
试试这个:
it ('cannot play outside the board', function() {
expect(scope.play(10)).to.be.undefined; // undefined
expect(scope.play(10)).to.not.be.undefined; // or not
});
Run Code Online (Sandbox Code Playgroud)