Sinon fake callOnce 未检测到第二次异步调用的调用
Sinon fake callOnce not detecting call for second async call
以下是我的第二个假冒程序未检测到调用的代码。
我有一个 class 具有创建者功能。创建者函数 returns a class 几乎没有异步函数。
const parentfn = {
fn1: async x => { return x + 1 },
fn2: async y => { return y + 2 },
fn3: (text) => {
console.error('Warning::', text)
return
}
}
const testClass = {
createParent: () => parentfn
}
const testMainFuntion = async (tc) => {
const parent = tc.createParent()
const var1 = await parent.fn1(1)
const var2 = await parent.fn2(1)
parent.fn3(var1 + var2)
}
然后将 class 传递给实际方法,这就是我要测试的方法。看来测试应该通过了。
// Unit Test
it('should return updated value to the user', () => {
// testMainFuntion(testClass);
const fakeFn1 = sinon.fake.resolves(0)
const fakeFn2 = sinon.fake.resolves(0)
const fakeFn3 = sinon.fake();
const fakeParent = {
fn1: fakeFn1,
fn2: fakeFn2,
fn3: fakeFn3
}
const fakeCreate = {
createParent: () => fakeParent
}
testMainFuntion(fakeCreate)
//Passes
sinon.assert.calledOnce(fakeFn1)
//Fails
sinon.assert.calledOnce(fakeFn2)
})
您只需要一点零钱。
在断言之前等待 testMainFuntion
完成:
it('should return updated value to the user', async () => { // <= use async test function
// testMainFuntion(testClass);
const fakeFn1 = sinon.fake.resolves(0)
const fakeFn2 = sinon.fake.resolves(0)
const fakeFn3 = sinon.fake();
const fakeParent = {
fn1: fakeFn1,
fn2: fakeFn2,
fn3: fakeFn3
}
const fakeCreate = {
createParent: () => fakeParent
}
await testMainFuntion(fakeCreate) // wait for testMainFuntion to complete
sinon.assert.calledOnce(fakeFn1) // SUCCESS
sinon.assert.calledOnce(fakeFn2) // SUCCESS
})
以下是我的第二个假冒程序未检测到调用的代码。
我有一个 class 具有创建者功能。创建者函数 returns a class 几乎没有异步函数。
const parentfn = {
fn1: async x => { return x + 1 },
fn2: async y => { return y + 2 },
fn3: (text) => {
console.error('Warning::', text)
return
}
}
const testClass = {
createParent: () => parentfn
}
const testMainFuntion = async (tc) => {
const parent = tc.createParent()
const var1 = await parent.fn1(1)
const var2 = await parent.fn2(1)
parent.fn3(var1 + var2)
}
然后将 class 传递给实际方法,这就是我要测试的方法。看来测试应该通过了。
// Unit Test
it('should return updated value to the user', () => {
// testMainFuntion(testClass);
const fakeFn1 = sinon.fake.resolves(0)
const fakeFn2 = sinon.fake.resolves(0)
const fakeFn3 = sinon.fake();
const fakeParent = {
fn1: fakeFn1,
fn2: fakeFn2,
fn3: fakeFn3
}
const fakeCreate = {
createParent: () => fakeParent
}
testMainFuntion(fakeCreate)
//Passes
sinon.assert.calledOnce(fakeFn1)
//Fails
sinon.assert.calledOnce(fakeFn2)
})
您只需要一点零钱。
在断言之前等待 testMainFuntion
完成:
it('should return updated value to the user', async () => { // <= use async test function
// testMainFuntion(testClass);
const fakeFn1 = sinon.fake.resolves(0)
const fakeFn2 = sinon.fake.resolves(0)
const fakeFn3 = sinon.fake();
const fakeParent = {
fn1: fakeFn1,
fn2: fakeFn2,
fn3: fakeFn3
}
const fakeCreate = {
createParent: () => fakeParent
}
await testMainFuntion(fakeCreate) // wait for testMainFuntion to complete
sinon.assert.calledOnce(fakeFn1) // SUCCESS
sinon.assert.calledOnce(fakeFn2) // SUCCESS
})