gpt4 book ai didi

javascript - 如何模拟依赖关系以返回特定数据?

转载 作者:行者123 更新时间:2023-12-01 01:26:17 25 4
gpt4 key购买 nike

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

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

然后在单元测试中,当我调用时

toBeMocked.MockedMethod()

它返回一些东西。我该如何使用 sinonjs 来做到这一点?

最佳答案

Sinon 的工作方式与 Moq 略有不同,主要是因为 C# 是一种与 JS 截然不同的语言。 Moq 创建子类来注入(inject)假方法,而 sinon 可以通过将它们直接分配给对象来注入(inject)它们。

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

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

这会将 stub 方法分配给 toBeMocked 对象的 MockedMethod 属性。因此,即使 MockedMethod 是原型(prototype)方法,它也只会影响该对象。

如果您想替换构造函数的所有实例的方法,您可以这样做。假设 MockedClass 是用于创建 toBeMocked 对象的构造函数,它看起来像这样:

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

然后在你的拆卸代码中:

MockedClass.prototype.MockedMethod.restore();

您需要像这样恢复它,因为该原型(prototype)不会在测试之间重新创建,因此如果您不这样做,您的 stub 将污染您的其他测试代码。

关于javascript - 如何模拟依赖关系以返回特定数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53744634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com