2016-12-05 61 views
0

我正在写angular2 - karma - jasmine的单元测试。
错误:没有MockBackend的提供者!当写单元测试angular2 final

我使用mockBackend来响应服务调用API时的数据。 这是我的代码

function Connection(mockBackend) { 
      connection.mockRespond(new Response(
       new ResponseOptions({ 
         body: JSON.stringify(lookup) 
        } 
      ))); 
     }); 
    } 

describe('Update Contact Details Test',() => { 
     let fixture, comp; 

     beforeEach(async(inject([MockBackend], (mockBackend: MockBackend) => { 
     Connection(mockBackend); 

     TestBed.configureTestingModule({ 
       declarations: [ ContactFieldListComponent ], 
       providers: _.union(DEFAULT_PROVIDERS, [FieldService, LookupsService, ContactService]), 
       schemas: [CUSTOM_ELEMENTS_SCHEMA], 
       imports: DEFAULT_IMPORT 
      }) 
      .compileComponents().then(() => { 
       fixture = TestBed.createComponent(ContactFieldListComponent); 
       comp = fixture.componentInstance; 
      }); 
    }))); 

    it('get contact field list',() => 
     expect(1).toBe(1); 
    }); 
}); 

它不与错误Error: No provider for MockBackend!工作。
我该如何解决它?

+0

什么'DEFAULT_PROVIDERS'的内容? – Dinistro

+0

@Dinistro,'DEFAULT_PROVIDERS = [{提供:LocationStrategy,useClass:HashLocationStrategy},TranslateService,FormBuilder,DatePipe]'。 – Sophia

+0

在这种情况下,看看我的回答:) – Dinistro

回答

4

看起来你错过了将MockBackend添加到TestBed的提供者中。

... 
TestBed.configureTestingModule({ 
      declarations: [ ContactFieldListComponent ], 
      providers: _.union(
       DEFAULT_PROVIDERS, [ 
        FieldService, 
        LookupsService, 
        ContactService, 
        MockBackend // <- add it here 
       ]), 
      schemas: [CUSTOM_ELEMENTS_SCHEMA], 
      imports: DEFAULT_IMPORT 
     }) 
... 

此外,我认为你有一个与TestBed下创建另一个beforeEach,因为在第一个,MockBackend未注册。

我对你进行了抽样检测,也许可以帮助你:https://github.com/angular-workshops/angular2-testing/blob/solution/tour-of-heroes/src/app/hero.service/hero.service.shallow.spec.ts

+0

谢谢。我尝试过,但它不工作:( – Sophia

+0

@Sophia对不起,有一个错字,你可以用'MockBackend'再试一次,如果它不工作,请添加你的新消息。 – Dinistro

+0

是的我试着用'MockBackend',它不工作与同样的错误'失败:没有供应商MockBackend!' – Sophia

相关问题