У меня есть метод, который возвращает разные значения в зависимости от полученных аргументов
const myAPI = {
getRepository: async data => await connectDB(data)
}
userService = {
create: async data => {
const user = await getRepository('User').save(data.user)
const image = await getRepository('Image').save(data.image)
// this code shows that returned values matter
if (user & image) {
return { user, image }
} else if (user) {
return { user }
} else if (image) {
return { image }
} else {
return {}
}
}
}
Вот мой макет
import { createSandbox } from 'sinon'
const mock = createSandbox().mock(myAPI)
mock
.expects('getRepository')
.withArgs('User')
.returns(fakeUser)
.withArgs('Image')
.returns(fakeImage)
(async () => await userService.create({ user, image }))()
И у меня следующая ошибка
ExpectationError: Unexpected call: getRepository(function User() {})
Expected getRepository([function Image() {}, function User() {}][, ...]) once (never called)
Как должен выглядеть мой код, чтобы макет работал правильно?