Sinon.js 模拟不识别方法

Sinon.js mocks not recognizing methods

我目前正在使用 sinonjs 和 mocha 作为测试框架。我正在尝试模拟一个 class,但它似乎无法识别这些方法。

示例:

module ModuleA{
    export class ClassA {
         public funciton1() {
              //do something
         }
    }
}

it.only("test1", function () {
    var sandbox = sinon.sandbox.create();
    var mockClassA = sandbox.mock(ModuleA.ClassA);

    mockClassA.expects("function1").once();
    mockClassA.function1(); 
});

但是,它抛出一个异常

TypeError: Attempted to wrap undefined property function1 as function

我是 sinonjs 的新手,所以很有可能我没有正确使用它。 Function1 是在 ClassA 中定义的,因此代码正在为 ClassA 创建一个 mock,然后说它希望在 mock 上调用 function1。我不确定为什么它找不到 function1 作为函数。

任何建议表示赞赏, 谢谢, D

mock 方法将对象的实例作为参数,并且您正在传递一个函数(class 声明)。使用 new 关键字创建实例:

var mockClassA = sandbox.mock(new ModuleA.ClassA());