![](/img/trans.png)
[英]How do I return mock data from requests to the Twitter Streaming API in Node
[英]How do I mock dependencies to return specific data?
来自C#中的Moq,您可以在其中执行以下操作:
someMock
.Setup(toBeMocked => toBeMocked.MockedMethod(It.IsAny<Something>()))
.Returns(something);
然后在单元测试中当我打电话
toBeMocked.MockedMethod()
它返回something
。 我该如何用sinonjs做到这一点?
从文档https://sinonjs.org/releases/v7.2.2/stubs/中 :
const fakeMethod = () => something;
const stub = sinon.stub(toBeMocked , 'MockedMethod');
stub.callsFake(fakeMethod);
更新:示例jsfiddle
Sinon与Moq的工作方式略有不同,主要是因为C#与JS的语言截然不同。 Moq创建子类以注入伪造的方法,而sinon可以通过将它们直接分配给对象来注入它们。
假设toBeMocked
是带有实例方法MockedMethod
的对象,则是最基本的模式:
sinon.stub(toBeMocked, 'MockedMethod').returns(something);
这会将存根方法分配给toBeMocked
对象的MockedMethod
属性。 这样,即使MockedMethod
是原型方法,它也只会影响该对象。
如果要为构造函数的所有实例替换方法,则可以这样做。 假设MockedClass
是用于创建toBeMocked
对象的toBeMocked
函数,则它看起来像这样:
sinon.stub(MockedClass.prototype, 'MockedMethod').returns(something);
然后在您的拆卸代码中:
MockedClass.prototype.MockedMethod.restore();
您需要像这样恢复它,因为不会在测试之间重新创建该原型,因此,如果您不这样做,则存根将污染您的其他测试代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.