TypeError: Attempted to wrap getRepository which is already wrapped
TypeError: Attempted to wrap getRepository which is already wrapped
我需要用 sinon 多次包装一个方法,以便能够 return 基于参数的不同对象。我该怎么做?
我要测试的控制器看起来像这样:
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
找到方法:
const SalesforceMock = sandbox.mock(Salesforce);
SalesforceMock.expects('getRepository')
.twice()
.onFirstCall()
.returns(serviceCallRepository)
.onSecondCall()
.returns(clientRepository);
我需要用 sinon 多次包装一个方法,以便能够 return 基于参数的不同对象。我该怎么做?
我要测试的控制器看起来像这样:
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
找到方法:
const SalesforceMock = sandbox.mock(Salesforce);
SalesforceMock.expects('getRepository')
.twice()
.onFirstCall()
.returns(serviceCallRepository)
.onSecondCall()
.returns(clientRepository);