Как смоделировать метод, который возвращает разные значения в зависимости от полученных аргументов? - PullRequest
1 голос
/ 23 июня 2019

У меня есть метод, который возвращает разные значения в зависимости от полученных аргументов

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)

Как должен выглядеть мой код, чтобы макет работал правильно?

...