【发布时间】:2013-12-13 02:28:21
【问题描述】:
我使用了一个库proxyquire,它包装了 Node 的 require 方法以允许 Mock 对象注入。其中一个特点是它使用原始模拟对象扩展了缺失的属性。您可以通过在模拟对象上设置一个名为@noCallThru 的属性来关闭它,如下所示:
MockObj =
stubFunc: ->
"@noCallThru": true
proxyquire "path/to/module",
"path/to/mocked_module": MockObj
有些模块是构造函数(类),所以要模拟它们,您可以使用 CoffeeScript 的类系统。然而,@noCallThru 的使用会在返回的对象(在本例中是类)上进行检查,并且由于它不是实例,因此不会使用原型。 @noCallThru 需要是类的静态属性。
如何为需要引号的 CoffeeScript 类定义静态属性?我能想到的最好的办法就是像这样注入严格的 JavaScript:
class MockClass
stubFunc: ->
`MockClass['@noCallThru'] = true`
有没有更好的办法?
【问题讨论】:
标签: coffeescript