Технически они делают то же самое, но changeDetecotrRef.detectChanges()
- это часть функциональности компонента, в то время как fixture.detectChanges()
- это прокладка для тестирования.
Разница в том, что changeDetecotrRef.detectChanges()
запускает обнаружение изменений в скомпилированном приложении Angular, а fixture.detectChanges()
запускает обнаружение изменений в тестовой среде. Первый предназначен для работы с полностью скомпилированным приложением Angular, а второй - с устройством, предназначенным для эмуляции полного приложения Angular.
Правило № 1 модульного тестирования - не изменять код для соответствия тесту, поэтому используйте changeDetecotrRef.detectChanges()
в коде компонента, когда вам необходимо обнаружение изменений, чтобы компонент функционировал, и используйте fixture.detectChanges()
для проверки теста, когда ожидается обнаружение изменений (который почти всегда используется для тестирования обновлений пользовательского интерфейса).