我正在为我的DetailCtrl编写jasmine测试。我有10个JSON文件,每个文件名都像这样
1.json
2.json
3.json
在我的数据文件夹中
这是我的详细控制器
backpagecontrollers.controller('DetailCtrl', function($scope, $stateParams, $http) {
$http.get('data/' + $stateParams.listingId + '.json').success(function(data) {
$scope.extrainfo = data;
});
});
详细控制器正在从我的数据文件夹中获取每个1.json、2.json、3.json文件。
以下是我的路由的一部分:
.state('listingdetail', {
url: "/listings/:listingId",
templateUrl: "partials/detail.html",
controller: 'DetailCtrl'
})
让我们回到测试中,我将
$stateParams
和 $state
都注入了测试中。 我想测试上面的每个JSON文件中是否存在图像。 我正在设置httpbackend以获取来自 $stateparams
的listingId与本地主机URL相加,而我已经在路由的配置中进行了设置,但是 listingId
返回为未定义。 我需要在我的测试中注入其他内容吗?describe('Detail Ctrl', function() {
var scope, ctrl, httpBackend, stateparams, listingId;
beforeEach(angular.mock.module("backpageApp"));
beforeEach(angular.mock.inject(function($controller, $rootScope, _$httpBackend_, $stateParams, $state) {
httpBackend = _$httpBackend_;
stateparams = $stateParams;
listingId = stateparams.listingId;
httpBackend.expectGET('http://localhost:8000/#/listings/' + listingId).respond([{id: 1 }, {id: 2}, {id:3}, {id:4}, {id:5}, {id:6}, {id:7}, {id:8}, {id:9}, {id:10}]);
scope = $rootScope.$new();
ctrl = $controller("DetailCtrl", {$scope:scope});
}));
it('the images for each listing should exist', function() {
httpBackend.flush();
expect(scope.images).toBe(true)
});
});
我遇到了这个错误。
Error: Unexpected request: GET data/undefined.json
Expected GET http://localhost:8000/#/listings/undefined