gpt4 book ai didi

javascript - sinon 模拟 withArgs 中具有未知值的对象 - sinon.match

转载 作者:行者123 更新时间:2023-12-03 08:56:24 26 4
gpt4 key购买 nike

我正在尝试创建一个单元测试来测试我的代码创建的对象是否已成功发送到更新函数(当前不测试更新函数,因为这将是集成测试)。

我想做的是使用 sinon 模拟来检查更新方法的输入是否正确:

var objectToUpdate = {
"_id": 55f019a32f55b4508b05a155, //mongodb _id assigned earlier in the code
etc...
}

var mock = sinon.mock(MyClass.prototype);
mock.expects("update").once().withArgs([objectToUpdate]);
otherClass.functionThatCallsUpdate(function(error, result){
(typeof error).should.equal.null;
mock.verify();
mock.restore();
done();
});

问题是我正在测试的代码是数据库填充代码的一部分,所以我不知道在测试运行之前对象的 _id 是什么,因为它是在过程的早期创建的,所以withArgs() 部分测试失败。

是否可以在 sinon 模拟中为 withArgs() 指定部分对象,或者我应该使用另一种方法吗?

一个不太有用(但总比没有好)的选项是能够指定包含 objectToUpdate 的数组大小的期望,但我也找不到方法来做到这一点.

最佳答案

可以通过从对象中删除 _id 并使用 sinon.match 来实现此目的。 :

mock.expects("update").once().withArgs([sinon.match(objectToUpdate)]).yields(null);

关于javascript - sinon 模拟 withArgs 中具有未知值的对象 - sinon.match,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32479908/

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