Chai:如何用'should'语法来testingundefined
在本教程的基础上testing一个带有chai的angularjs应用程序,我想使用“should”风格为未定义的值添加一个testing。 这失败了:
it ('cannot play outside the board', function() { scope.play(10).should.be.undefined; });
与错误“types错误:不能读属性'应该'未定义”,但testing通过与“期望”风格:
it ('cannot play outside the board', function() { chai.expect(scope.play(10)).to.be.undefined; });
我怎样才能使它与“应该”?
这是should语法的缺点之一。 它通过将should属性添加到所有对象来工作,但是如果返回值或variables值未定义,则不存在用于保存该属性的对象。
该文档提供了一些解决方法,例如:
var should = require('chai').should(); db.get(1234, function (err, doc) { should.not.exist(err); should.exist(doc); doc.should.be.an('object'); });
should.equal(testedValue, undefined);
正如柴文献中提到的那样
(typeof scope.play(10)).should.equal('undefined');
testing未定义的
var should = require('should'); ... should(scope.play(10)).be.undefined;
testingnull
var should = require('should'); ... should(scope.play(10)).be.null;
testing虚假,即在条件下视为虚假
var should = require('should'); ... should(scope.play(10)).not.be.ok;
我努力为undefinedtesting编写should语句。 以下不起作用。
target.should.be.undefined();
我find了以下解决scheme。
(target === undefined).should.be.true()
如果还可以把它写成types检查
(typeof target).should.be.equal('undefined');
不知道以上是正确的方式,但它确实有效。
根据Github的幽灵邮报
尝试这个:
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 });
@ david-norman的答案根据文档是正确的,我有一些安装问题,而是select了以下内容。
(typeof scope.play(10))。should.be.undefined;
你可以将你的函数结果包装在should()
并testing一个“undefined”types:
it ('cannot play outside the board', function() { should(scope.play(10)).be.type('undefined'); });