Node.js "should" 库断言,它是如何工作的?
Node.js "should" library assertion, how does it work?
我们的 Mocha 测试套件有这一行:
model.getResourceDependencies.should.be.a.Function;
测试代码使用should
库
如您所见,上面的表达式既不是赋值也不是调用,是吗?
这是如何运作的?是否存在某种底层机制 onPropertyRead()
或类似的东西,以便即使没有显式调用函数,should 库也可以执行某些操作?
顺便说一下,要记住任何 should 或 chai API 几乎是不可能的。
should.js 使用 ES5 getter。
https://github.com/shouldjs/should.js/blob/9.0.2/lib/should.js#L105
chai 也使用它。
https://github.com/chaijs/chai/blob/3.5.0/lib/chai/interface/should.js#L35
一般来说,这种行为适用于 ES5 getter or ES6 Proxy (and Object.prototype.__noSuchMethod__
在过去)
我们的 Mocha 测试套件有这一行:
model.getResourceDependencies.should.be.a.Function;
测试代码使用should
库
如您所见,上面的表达式既不是赋值也不是调用,是吗?
这是如何运作的?是否存在某种底层机制 onPropertyRead()
或类似的东西,以便即使没有显式调用函数,should 库也可以执行某些操作?
顺便说一下,要记住任何 should 或 chai API 几乎是不可能的。
should.js 使用 ES5 getter。 https://github.com/shouldjs/should.js/blob/9.0.2/lib/should.js#L105
chai 也使用它。 https://github.com/chaijs/chai/blob/3.5.0/lib/chai/interface/should.js#L35
一般来说,这种行为适用于 ES5 getter or ES6 Proxy (and Object.prototype.__noSuchMethod__ 在过去)