2016-12-05 3 views
0

Я использую единичный тест для углового2 - карма - жасмин.
Ошибка: нет провайдера для MockBackend! при записи единичного теста для определения углового2

Я использовал 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 
     }) 
... 

Кроме того, я думаю, вы должны создать еще beforeEach под одной с TestBed, так как в первом, 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

yep Я пробовал с' MockBackend', и он не работает с той же ошибкой 'Failed: Нет провайдера для MockBackend!' – Sophia

Смежные вопросы