【发布时间】:2016-06-28 12:08:28
【问题描述】:
import {Injectable} from '@angular/core';
import {Http} from '@angular/http';
@Injectable()
export class HttpService {
result: any;
constructor(private http:Http) {
}
public postRequest(){
return this.http.get('http://httpbin.org/get');
}
}
上面是我的代码,这是我的测试:
我不想模拟任何东西,只是测试真正的 http 连接。
编辑 - 新的 service.spec 文件:
import {beforeEachProviders, beforeEach, it, describe, expect, inject} from '@angular/core/testing';
import {HttpService} from '../../providers/http-service/http-service';
import {TranslateService} from 'ng2-translate/ng2-translate';
import {Goal} from '../../providers/goal/goal';
import {NavController} from 'ionic-angular';
import {HTTP_PROVIDERS, Http} from '@angular/http';
describe('Http Service Test', () => {
beforeEachProviders(() => {
return [
HTTP_PROVIDERS,
HttpService
];
});
it('should return response when subscribed to postRequest',
inject([HttpService], (httpService: HttpService) => {
httpService.postRequest().subscribe((res) => {
expect(res.text()).toBe('hello raja');
});
}));
});
这些是我在业力控制台中的错误:
28 06 2016 14:33:32.067:ERROR [Chrome 51.0.2704 (Mac OS X 10.11.4) | Http Service Test | should return response when subscribed to postRequest]: TypeError: Cannot read property 'getCookie' of null
at CookieXSRFStrategy.configureRequest (http://localhost:9876/absolute/var/folders/vy/18sb1wqs60g734bhr75cw9_r0000gn/T/9b9439f5f9c1590d3052594bcae9e877.browserify?26719cf22e6406ebc638b6b187c777666dcc5698:36568:81)
at XHRBackend.createConnection (http://localhost:9876/absolute/var/folders/vy/18sb1wqs60g734bhr75cw9_r0000gn/T/9b9439f5f9c1590d3052594bcae9e877.browserify?26719cf22e6406ebc638b6b187c777666dcc5698:36583:28)
at httpRequest (http://localhost:9876/absolute/var/folders/vy/18sb1wqs60g734bhr75cw9_r0000gn/T/9b9439f5f9c1590d3052594bcae9e877.browserify?26719cf22e6406ebc638b6b187c777666dcc5698:37476:20)
【问题讨论】:
-
如果您的测试超出了类的边界并且到达其他外部服务不是单元测试,那么您可能需要集成测试。
-
通过单元测试框架构建集成测试是合法的。请评论者提供答案,而不是与单元测试和模拟相撞。
标签: testing typescript angular integration-testing