我有一个类执行一些简单的逻辑运算,例如NAND。 在内部,其他功能建立在NAND上,使得AND由两个NAND构成。
class Logic {
constructor(a,b) {
this.a = a;
this.b = b;
}
NAND(a,b) {
return !(a && b);
}
OR(a,b) {
return this.NAND(this.NAND(a,a),this.NAND(b,b));
}
}
在单元测试中,我想确保它可以正常工作并且没有问题:
describe('Testing the OR method', function() {
it('OR 0,0 should return 0', function() {
let o = logic.OR(0,0);
assert.equal(o,0);
});
it('OR 0,1 should return 1', function() {
let o = logic.OR(0,1);
assert.equal(o,true);
});
it('OR 1,0 should return 0', function() {
let o = logic.OR(1,0);
assert.equal(o,true);
});
it('OR 1,1 should return 0', function() {
let o = logic.OR(1,1);
assert.equal(o,true);
});
});
但是,当我在类中添加一个以后要用于测试的函数时,它会失败。
getFunction(which) {
switch(which.toLowerCase()) {
case '&&':
case 'and':
case '^': return this.AND;
case '!&&':
case 'nand':
case '!^': return this.NAND;
case '||':
case 'or':
case 'v': return this.OR;
case '!':
case 'not': return this.NOT;
default: return null;
}
}
在测试中,此操作失败:
describe('Testing function retrieval', function() {
it('Should return the AND function', function() {
let f = logic.getFunction('^');
assert.equal(f.name,'AND');
console.log(f(1,1));
});
});
该断言实际上评估为true,但是执行该函数失败并显示:
TypeError: Cannot read property 'NAND' of undefined
有什么想法吗?