我有:

beforeEach(() => {
        TestBed.configureTestingModule({
            providers: [
                DocumentsLoaderSvc,
               { provide: MgrSvc, useClass: MockMgrSvc },
               { provide: URLLoaderSvc, useClass:  MockURLLoaderSvcWhenData}
            ]
        });
    });

如何用另一个mock重写urlloadersvc,在一个具有自己独特需求的“it”案例中?有什么东西像测试床。重写器…现在,每一个it语句都有自己的“描述”,在每个之前都有自己的描述。

最佳答案

也许您最好的选择是使mock可以配置以满足不同测试用例的需要。将其作为实例保存,并使用useValue而不是useClass

let urlLoderSvc: URLLoaderSvc;

beforeEach(() => {
  urlLoaderSvc = new URLLoaderSvc();

  TestBed.configureTestingModule({
     providers: [
        DocumentsLoaderSvc,
        { provide: MgrSvc, useClass: MockMgrSvc },
        { provide: URLLoaderSvc, useValue: urlLoaderSvc }
     ]
  });
});

现在在您的it测试用例中,您只需将urlLoaderSvc实例配置为执行您想要的任何操作。

09-25 15:13