Ниже приведен код, где моя вторая фальшивка не обнаруживает, что был сделан вызов.
У меня есть класс с функцией создателя.Функция создателя возвращает класс с несколькими асинхронными функциями.
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)
}
Этот класс затем передается фактическому методу, который я и пытаюсь проверить.Казалось, что тест должен пройти.
// 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)
})