如何分配需要在CoffeeScript中引用的静态类属性?
我使用一个库来包装节点的require方法,以允许模拟对象注入。其中一个特性是,它使用原始属性扩展模拟对象,以便填充缺少的属性。您可以通过在名为如何分配需要在CoffeeScript中引用的静态类属性?,coffeescript,Coffeescript,我使用一个库来包装节点的require方法,以允许模拟对象注入。其中一个特性是,它使用原始属性扩展模拟对象,以便填充缺少的属性。您可以通过在名为@noCallThru的模拟对象上设置一个属性来关闭此功能,如下所示: MockObj = stubFunc: -> "@noCallThru": true proxyquire "path/to/module", "path/to/mocked_module": MockObj 有些模块是构造函数(类),所以要模拟它们,可以使用C
@noCallThru
的模拟对象上设置一个属性来关闭此功能,如下所示:
MockObj =
stubFunc: ->
"@noCallThru": true
proxyquire "path/to/module",
"path/to/mocked_module": MockObj
有些模块是构造函数(类),所以要模拟它们,可以使用CoffeeScript的类系统。但是,@noCallThru
的使用是在返回的对象(在本例中是类)上检查的,因为它不是实例,所以不会使用prototype。@noCallThru
必须是类的静态属性
如何为需要引用的CoffeeScript类定义静态属性?我能想到的最好办法就是这样注入JavaScript:
class MockClass
stubFunc: ->
`MockClass['@noCallThru'] = true`
有更好的方法吗?您不需要将其作为JavaScript注入。您可以这样做:
class MockClass
stubFunc: ->
@['@noCallThru'] = true
(因为在类定义中,这个
或@
指的是类/构造函数本身)
上述代码编译为:
var MockClass;
MockClass = (function() {
MockClass.name = 'MockClass';
function MockClass() {}
MockClass.prototype.stubFunc = function() {};
MockClass['@noCallThru'] = true;
return MockClass;
})();
您不需要将其作为JavaScript注入。您可以这样做:
class MockClass
stubFunc: ->
@['@noCallThru'] = true
(因为在类定义中,这个
或@
指的是类/构造函数本身)
上述代码编译为:
var MockClass;
MockClass = (function() {
MockClass.name = 'MockClass';
function MockClass() {}
MockClass.prototype.stubFunc = function() {};
MockClass['@noCallThru'] = true;
return MockClass;
})();
您不需要将其作为JavaScript注入。您可以这样做:
class MockClass
stubFunc: ->
@['@noCallThru'] = true
(因为在类定义中,这个
或@
指的是类/构造函数本身)
上述代码编译为:
var MockClass;
MockClass = (function() {
MockClass.name = 'MockClass';
function MockClass() {}
MockClass.prototype.stubFunc = function() {};
MockClass['@noCallThru'] = true;
return MockClass;
})();
您不需要将其作为JavaScript注入。您可以这样做:
class MockClass
stubFunc: ->
@['@noCallThru'] = true
(因为在类定义中,这个
或@
指的是类/构造函数本身)
上述代码编译为:
var MockClass;
MockClass = (function() {
MockClass.name = 'MockClass';
function MockClass() {}
MockClass.prototype.stubFunc = function() {};
MockClass['@noCallThru'] = true;
return MockClass;
})();
@['@noCallThru']=true
将更接近通常的@class_prop=x
@muistooshort:谢谢,将它移到了答案的第一部分。@['@noCallThru']=true
将更接近通常的@class_prop=x
@muistooshort:谢谢,将它移到了答案的第一部分。[@noCallThru']=true
将更接近通常的@class_prop=x
@muistooshort:谢谢,把它移到了答案的第一部分。@['@noCallThru']=true
将更接近通常的@class_prop=x
@muistooshort:谢谢,把它移到了答案的第一部分。