так что моя проблема очень легко объяснитьУгловых 2 и испытание и асинхронная Кармы HTTP
это мой тест спецификация
import {
describe,
expect,
it,
inject,
beforeEachProviders
} from 'angular2/testing_internal';
import {RestClient} from './rest.service';
import 'rxjs/add/operator/toPromise';
import 'rxjs/add/operator/delay';
import {
HTTP_PROVIDERS
} from 'angular2/http';
export function main() {
describe('RestClient Service',() => {
beforeEachProviders(() => [HTTP_PROVIDERS, RestClient]);
it('is defined', inject([RestClient], (client) =>{
client.get('http://jsonplaceholder.typicode.com/posts/1')
.delay(2000)
.toPromise()
.then((res) => {
console.log('test');
expect(res.length).toBeGreaterThan(1000);
});
}));
});
}
и этот метод в классе «RestClient», которые возвращают наблюдаемые
public get(url:string): Observable<any> {
return this.http.get(url).map(res => res.json());
}
Итак, я запустить тест и тест возвращение
START:
LOG: 'ciao'
RestClient Service
✔ is defined
PhantomJS 2.0.0 (Mac OS X 0.0.0) LOG: 'ciao'
Finished in 0.026 secs/0.038 secs
SUMMARY:
✔ 2 tests completed
Для Karma все работает хорошо, и тест передается правильно и не соответствует действительности, и в то же время, если я ставлю console.log в «then», он никогда не вызывается. Сом, я полагаю, что это проблема с вызовами Async, есть ли у вас какие-либо идеи, как тестировать в Angular2 Async Calls Я также использовал Inject и AsyncInject. Я знаю, что я могу использовать MockBackend, но мне нужно проверить с внешними URL'
заранее спасибо за вашу помощь
Вы хотите опубликовать свой обход этой проблемы? @cingusoft – candidJ