我正在试着弄清楚如何使用sinon模拟一个构造函数.我有一个函数,通过调用接受一些参数的构造函数来创建多个小部件.我想验证构造函数是否使用正确的参数调用了正确的次数,但我不想实际构造小部件.以下链接似乎解释了一种模拟构造函数的直接方法,但它对我不起作用:
http://tinnedfruit.com/2011/03/25/testing-backbone-apps-with-jasmine-sinon-2.html
当我对存根构造函数进行以下调用时:
sinon.stub(window, "MyWidget");
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Uncaught TypeError: Attempted to wrap undefined property MyWidget as function
Run Code Online (Sandbox Code Playgroud)
在Chrome中进行调试时,我看到MyWidget显示在Scope Variables的Local部分中,但是窗口外没有MyWidget属性.
任何帮助将不胜感激.
鉴于我有两个ES6课程.
这是A类:
import B from 'B';
class A {
someFunction(){
var dependency = new B();
dependency.doSomething();
}
}
Run Code Online (Sandbox Code Playgroud)
和B级:
class B{
doSomething(){
// does something
}
}
Run Code Online (Sandbox Code Playgroud)
我使用摩卡(用于ES6的babel),柴和sinon进行单元测试,效果非常好.但是,在测试A类时,如何为B类提供模拟类?
我想模拟整个类B(或所需的函数,实际上并不重要),以便A类不执行实际代码,但我可以提供测试功能.
这就是现在的mocha测试:
var A = require('path/to/A.js');
describe("Class A", () => {
var InstanceOfA;
beforeEach(() => {
InstanceOfA = new A();
});
it('should call B', () => {
InstanceOfA.someFunction();
// How to test A.someFunction() without relying on B???
});
});
Run Code Online (Sandbox Code Playgroud)