我收到以下错误
Expected 0 to be 4.
...anggen/app/products/products.list.controller.spec.js:22:35
有谁可以告诉我为什么httpbackend没有返回响应?还是我错过了傻事?花了很多时间让它上班,我被卡住了.. 请看下面的测试用例。有问题的测试是它(“应该创建控制器”...测试 我的控制器代码如下......
module app.productList {
'use strict';
export interface IProductListModel {
title: string;
showImage: Boolean;
products: app.domain.IProduct[];
toggleImage(): void;
addNumbers(firstNumber:number, secondNumber:number): number;
}
export class ProductListCtrl implements IProductListModel {
title:string;
showImage:boolean;
products:app.domain.IProduct[];
static $inject = ["dataAccessService"]; // for minification
constructor(private dataAccessService:app.productService.DataAccessService) {
this.title = "Product List";
this.showImage = false;
this.products = [];
dataAccessService.getProductResource().query((data:app.domain.IProduct[]) => {
this.products = data;
});
}
public toggleImage():void {
this.showImage = !this.showImage;
}
public addNumbers(firstNumber:number, secondNumber:number) {
return firstNumber + secondNumber;
}
}
angular.module("app.products").controller("ProductListCtrl", ProductListCtrl)
}
我的服务代码如下......
module app.productService {
export interface IDataAccessService {
getProductResource(): ng.resource.IResourceClass<IProductResource>;
getProductResourceDetails(): ng.resource.IResourceClass<IProductResource>;
}
export interface IProductResource extends ng.resource.IResource<app.domain.IProduct> {
}
export class DataAccessService
implements IDataAccessService {
// for minification.
static $inject = ["$resource"];
constructor(private $resource: ng.resource.IResourceService) {
}
getProductResource(): ng.resource.IResourceClass<IProductResource> {
//return this.$resource("/api/products/:productId");
return this.$resource("http://localhost:9998/generic/products");
}
}
angular
.module("app.products")
.service("dataAccessService", DataAccessService);
}
我的测试代码如下......
describe("Product List Controller", function () {
var controller: app.productList.ProductListCtrl;
var dataAccessService: app.productService.DataAccessService;
var $httpBackend : ng.IHttpBackendService;
beforeEach(function () {
angular.mock.module("productManagement");
});
beforeEach(inject(function (
$rootScope: ng.IRootScopeService,
_$httpBackend_: ng.IHttpBackendService,
_dataAccessService_: app.productService.DataAccessService) {
dataAccessService=_dataAccessService_;
$httpBackend=_$httpBackend_;
}));
it("should create controller", () => {
$httpBackend.expectGET("http://localhost:9998/generic/products").respond([
{"id": "1", "name": "Pizza Vegetaria", "price": 5 },
{"id": "2", "name": "Pizza Salami", "price": 5.5 },
{"id": "3", "name": "Pizza Thunfisch", "price": 6 },
{"id": "4", "name": "Aktueller Flyer", "price": 0 }
]);
controller = new app.productList.ProductListCtrl(dataAccessService);
expect(controller).not.toBeNull();
var result = controller.products;
expect(result.length).toBe(4);
$httpBackend.flush();
});
});