【问题标题】:How do you mock/stub class instantiation with SinonJS?您如何使用 SinonJS 模拟/存根类实例化?
【发布时间】:2014-02-21 17:22:06
【问题描述】:

您如何使用 SinonJS 模拟或存根类实例化?我想对传递给构造函数的参数进行断言。

var myClass = new MyClass({ params: "To Test" } ); // how can I mock the 'new' on MyClass?

【问题讨论】:

    标签: javascript unit-testing mocking sinon


    【解决方案1】:

    你在构造函数中做了什么?您是否将参数分配给 MyClass 对象?如果是这样,

    var params = {param: 'To Test'};
    myClass = new MyClass(params);
    

    然后检查myClass.param = params.param

    调用var myClass = new MyClass(params)与调用相同

    var myClass = {};
    MyClass.call(myClass, params);
    myClass.__proto__ = MyClass.prototype; //This is considered bad practice, but is fine for testing.
    

    这是你要问的吗?如果不是,您希望对参数做出什么样的断言?

    【讨论】:

    • 难道 new 也不会克隆/创建一个与原始实例分开的新实例,这样“new”-ed 对象不会与原始对象共享任何相同的成员变量吗?
    • 也就是说,测试这个似乎很奇怪。这就像做var x=2 然后检查x===2
    • 谢谢!当然,我的实际测试并不像这样微不足道。我有 A 类实例化 B 类,我想验证 A 类在实例化过程中是否传递了正确的参数。
    猜你喜欢
    • 1970-01-01
    • 2017-03-02
    • 2014-02-21
    • 2017-07-08
    • 1970-01-01
    • 2018-03-24
    • 1970-01-01
    • 2021-03-15
    • 2018-03-28
    相关资源
    最近更新 更多