gpt4 book ai didi

javascript - 使用 sinon 在包装器中调用对象时如何进行单元测试?

转载 作者:行者123 更新时间:2023-11-29 23:05:13 24 4
gpt4 key购买 nike

下面的“set”方法需要使用sinon进行测试,我不知道该怎么做。

// foo is just a wrapper
function Foo() {
this.bar = new Bar();
}

Foo.prototype.set = function(x) {
this.bar.set(x);
}

这是对其进行单元测试的尝试:

var foo = new Foo();
it("can called set method", function() {
foo.set(x);
foo.bar.set.calledOnceWith(x);
});

foo.bar.set.calledOnceWith 不是函数。

最佳答案

你很接近。

你只需要在 Bar.prototype.set 上创建 spy:

import * as sinon from 'sinon';

function Bar() { }
Bar.prototype.set = function(x) {
console.log(`Bar.prototype.set() called with ${x}`);
}

function Foo() {
this.bar = new Bar();
}
Foo.prototype.set = function(x) {
this.bar.set(x);
}

it('calls set on its instance of Bar', () => {
const spy = sinon.spy(Bar.prototype, 'set'); // spy on Bar.prototype.set
const foo = new Foo();
foo.set(5);
sinon.assert.calledWithExactly(spy, 5); // SUCCESS
})

关于javascript - 使用 sinon 在包装器中调用对象时如何进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54916971/

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