【问题标题】:TypeError: Attempted to wrap getRepository which is already wrappedTypeError:尝试包装已包装的 getRepository
【发布时间】:2018-05-24 06:22:05
【问题描述】:

我需要用 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

【问题讨论】:

    标签: javascript typescript sinon


    【解决方案1】:

    找到了一种方法:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-21
      • 2016-07-04
      • 2015-07-13
      • 2019-09-22
      • 2012-02-08
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      相关资源
      最近更新 更多