代码之家  ›  专栏  ›  技术社区  ›  ThatBrianDude

如何模拟依赖项以返回特定数据?

  •  0
  • ThatBrianDude  · 技术社区  · 7 年前

    来自C#的Moq,您可以执行以下操作:

    someMock
        .Setup(toBeMocked => toBeMocked.MockedMethod(It.IsAny<Something>()))
        .Returns(something);
    

    toBeMocked.MockedMethod()
    

    something . 我如何与sinonjs合作?

    2 回复  |  直到 7 年前
        1
  •  1
  •   ylerjen    7 年前

    从文件中 https://sinonjs.org/releases/v7.2.2/stubs/

    const fakeMethod = () => something;
    const stub = sinon.stub(toBeMocked , 'MockedMethod');
    stub.callsFake(fakeMethod);
    

    更新:示例 jsfiddle

        2
  •  1
  •   sripberger    7 年前

    Sinon的工作原理与Moq有点不同,主要是因为C#与JS是一种非常不同的语言。Moq创建子类来注入假方法,而sinon能够通过将它们直接分配到对象来注入假方法。

    最基本的模式是,假设 toBeMocked 是具有实例方法的对象 MockedMethod :

    sinon.stub(toBeMocked, 'MockedMethod').returns(something);
    

    这会将存根方法分配给 财产 卸除 对象因此,它只影响该对象,即使 模拟法 这是一种原型方法。

    如果要替换构造函数所有实例的方法,可以这样做。假设 MockedClass 是用于创建 卸除

    sinon.stub(MockedClass.prototype, 'MockedMethod').returns(something);
    

    然后在稍后的拆卸代码中:

    MockedClass.prototype.MockedMethod.restore();
    

    您需要像这样恢复它,因为原型不是在测试之间重新创建的,所以如果不这样做,存根将污染其他测试代码。

    推荐文章