TypeError: Попытка обернуть getRepository, который уже обернут - PullRequest
0 голосов
/ 24 мая 2018

Мне нужно несколько раз обернуть метод с помощью sinon, чтобы иметь возможность возвращать различные объекты на основе аргумента.Как бы я это сделал?

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

const servicePackagesOfferingRepository = Salesforce.getRepository(ServicePackageOffering);
const servicePackageOffering = await servicePackagesOfferingRepository.findOneById(model.servicePackageOfferingId);

const serviceCallRepository = Salesforce.getRepository(ServiceCall);
serviceCall = await serviceCallRepository.save(serviceCall);

А модульный тест выглядит примерно так:

const servicePackagesOfferingRepository = new Repository(ServicePackageOffering);
const servicePackagesOfferingRepositoryMock = sandbox.mock(servicePackagesOfferingRepository);

servicePackagesOfferingRepositoryMock
.expects('findOneById')
.withArgs(inputModel.servicePackageOfferingId)
.resolves({});

sandbox
.mock(Salesforce)
.expects('getRepository')
.withArgs(ServicePackageOffering)
.returns(servicePackagesOfferingRepository);

const serviceCallRepository = new Repository(ServiceCall);
const serviceCallRepositoryMock = sandbox.mock(serviceCallRepository);

serviceCallRepositoryMock
.expects('save')
.once();

sandbox
.mock(Salesforce)
.expects('getRepository')
.withExactArgs(ServiceCall)
.returns(serviceCallRepository);

Но я получаю эту ошибку:

TypeError: Attempted to wrap getRepository which is already wrapped

1 Ответ

0 голосов
/ 30 мая 2018

Нашли способ сделать это:

const SalesforceMock = sandbox.mock(Salesforce);
SalesforceMock.expects('getRepository')
    .twice()
    .onFirstCall()
    .returns(serviceCallRepository)
    .onSecondCall()
    .returns(clientRepository);
...