【发布时间】:2018-11-11 10:57:50
【问题描述】:
我尝试测试服务,http post,如下面的代码。
我按照此post 进行测试,但出现错误。
我的服务代码:
public CreateProduct(newProd: Product): Observable<boolean> {
.....
let body = newProd.generateUrlencodedParameters(this.currentuser().token);
return this.http.post(API.getUrl(Api.URLS.CreateProduct), body, {
headers: headers
})
.map((response: Response) => {
let res = response.json();
if (res.StatusCode === 0) {
return true;
}
}
我的班级产品:
export class Product{
id: number;
prod_number: String;
prod_name: string;
constructor(obj: any) {
this.id= obj.id;
this.prod_number= obj.prod_number;
this.prod_name= obj.prod_name;
}
public generateUrlencodedParameters(token: string, id?: number): string
{
let urlSearchParams = new URLSearchParams();
urlSearchParams.append('prod_number', this.prod_number.toString());
urlSearchParams.append('prod_name', this.prod_name.toString());
urlSearchParams.append('token', token);
return urlSearchParams.toString();
}
}
我尝试了这段代码,以测试我的服务代码:
describe('Create Product ', () => {
let trackerFormService: ProductService,
mockService = {
createProduct: jasmine.createSpy('createProduct').and.returnValue(Observable.of('your session object mock goes here'))
};
beforeEach(() => {
TestBed.configureTestingModule({
imports: [HttpModule],
providers: [{
provide: ProductService,
useValue: mockService
}] }); });
beforeEach(inject([ProductService], (trackerFormService) => {
service = trackerFormService;
}));
describe('createProduct', () => {
it('add session ', () => {
let fakeResponse = null;
service.CreateProduct().subscribe((value) => {
fakeResponse = value;
}); }); });});
结果是:
ReferenceError: 服务未定义
请您给我任何想法,如何解决此问题,或任何测试服务帖子的示例。
谢谢。
【问题讨论】:
-
您确定将服务添加到需要该服务的组件中的提供者和构造函数中吗?
-
是的。现在我只想测试服务。
标签: angular unit-testing testing post jasmine