2016-09-30 2 views
0

Я пытаюсь создать экземпляр компонента в тестовом файле компонента. Но когда я делаю что-то вроде этого:Создание экземпляра компонента: Угловое модульное тестирование

let componentInstance = new component(); 

он попадает компонент конструктор, который дополнительно имеет что-то в своем теле,

constructor(param) { 
......; 
......; 
} 

теперь тело конструктор использует некоторые другие услуги, поэтому всякий раз, когда я пытаясь создать экземпляр этого компонента и запустить его, он жалуется на неизвестные свойства, которые используются в теле конструктора (потому что spec-файл, очевидно, не знает о том, что происходит в теле конструктора нашего компонента.

Любой i deas Как я могу создать экземпляр этого компонента в его spec-файле?

ответ

1

Перед каждым тестом необходимо установить испытательный модуль, используя TestBed. Здесь вы можете объявить, что вы тестируете компонент, и любые необходимые ему провайдеры. Затем вы создаете компонент, используя также TestBed.

beforeEach(() => { 
    TestBed.configureTestingModule({ 
    imports: [] 
    declarations: [ TestComponent ], 
    providers: [ TestService ] 
    }); 
}); 

it('...',() => { 
    let fixture = TestBed.createComponnt(TestComponent); 
    let component: TestComponent = fixture.componentInstance; 
}); 

Если TestService требует каких-либо услуг, то вы должны добавить их тоже. Если TestService требует Http, вам необходимо высмеять это соединение, чтобы в ходе теста не было реального запроса XHR. См ссылке ниже, например

Смотрите также:

  • Angular documentation in Testing. Он имеет примеры тестирования в большинстве сценариев, о которых вы можете думать.
  • This example, чтобы узнать, как вы можете издеваться над соединениями Http, чтобы обеспечить макетные ответы.
+0

Это помогает, спасибо! Но когда я попытался создать компонент с помощью TestBed, а затем создав его экземпляр с помощью «fixture.componentInstance», я до сих пор не могу получить доступ к свойствам компонента с этим экземпляром. Поэтому, если у меня есть целочисленная переменная, называемая «числом» в определении класса нашего компонента, я не могу получить доступ к «числу» с экземпляром, который мы только что создали, в файле specxt. Любые предложения по этому поводу? – Aiguo

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