Javascript 茉莉花业力单元测试“;错误:意外请求:GET/Content/json/3420“u layer0.json”;
编写一个简单的测试用例Javascript 茉莉花业力单元测试“;错误:意外请求:GET/Content/json/3420“u layer0.json”;,javascript,json,angularjs,karma-jasmine,httpbackend,Javascript,Json,Angularjs,Karma Jasmine,Httpbackend,编写一个简单的测试用例 describe('Services', function () { describe('API', function () { var $httpBackend, $rootScope, createController, requestHandler; var jsonLayer0 = "/Content/json/3420_layer0.json"; // Set up the module
describe('Services', function () {
describe('API', function () {
var $httpBackend, $rootScope, createController, requestHandler;
var jsonLayer0 = "/Content/json/3420_layer0.json";
// Set up the module
beforeEach(module('anbud'));
beforeEach(inject(function ($injector) {
// Set up the mock http service responses
$httpBackend = $injector.get('$httpBackend');
$httpBackend.whenGET(jsonLayer0).respond(200, '');
$rootScope = $injector.get('$rootScope');
// The $controller service is used to create instances of controllers
var $controller = $injector.get('$controller');
createController = function () {
return $controller('anbudTreeController', { '$scope': $rootScope });
};
}));
afterEach(function () {
$httpBackend.verifyNoOutstandingExpectation();
$httpBackend.verifyNoOutstandingRequest();
});
it('should fetch first layer', function () {
$httpBackend.expectGET(jsonLayer0);
var controller = createController();
$rootScope.getFirstLayer();
$httpBackend.flush();
});
我得到:
Error: Unexpected request: GET /Content/json/3420_layer0.json
但是,我有:
var jsonLayer0 = "/Content/json/3420_layer0.json";
$httpBackend.whenGET(jsonLayer0).respond(200, '');
所以,不确定问题是什么
完整堆栈跟踪:
Error: Unexpected request: GET test
No more request expected
at $httpBackend (C:/git/angularjs/NSview/NSviewer/Scripts/angular-mocks.js:1244:9)
at $httpBackend (C:/git/angularjs/NSview/NSviewer/Scripts/angular-mocks.js:1237:11)
at sendReq (C:/git/angularjs/NSview/NSviewer/Scripts/angular.js:10515:9)
at serverRequest (C:/git/angularjs/NSview/NSviewer/Scripts/angular.js:10222:16)
at processQueue (C:/git/angularjs/NSview/NSviewer/Scripts/angular.js:14745:28)
at C:/git/angularjs/NSview/NSviewer/Scripts/angular.js:14761:27
at Scope.$eval (C:/git/angularjs/NSview/NSviewer/Scripts/angular.js:15989:28)
at Scope.$digest (C:/git/angularjs/NSview/NSviewer/Scripts/angular.js:15800:31)
at Function.$httpBackend.flush (C:/git/angularjs/NSview/NSviewer/Scripts/angular-mocks.js:1543:38)
at Object.<anonymous> (C:/git/angularjs/NSview/NSviewer/app/tests/testServiceAPI.js:54:26)
Error: [$rootScope:inprog] $digest already in progress
http://errors.angularjs.org/1.4.7/$rootScope/inprog?p0=%24digest
at C:/git/angularjs/NSview/NSviewer/Scripts/angular.js:68:12
at beginPhase (C:/git/angularjs/NSview/NSviewer/Scripts/angular.js:16346:15)
at Scope.$digest (C:/git/angularjs/NSview/NSviewer/Scripts/angular.js:15780:9)
at Function.$httpBackend.verifyNoOutstandingExpectation (C:/git/angularjs/NSview/NSviewer/Scripts/angular-mocks.js:1575:38)
增加:
完整堆栈跟踪需要告诉
$httpBackend
预期GET请求
请尝试以下代码
it('should fetch first layer', function () {
$httpBackend.expectGET(jsonLayer0);
var controller = createController();
$rootScope.getFirstLayer();
$httpBackend.flush();
});
谢谢,这是有道理的,但添加了它,我仍然得到相同的错误!:/@ganjan删除$httpBackend.expectGET(jsonLayer0);从beforeach函数开始,只将其添加到测试用例中。您可以发布错误的完整堆栈跟踪。
it('should fetch first layer', function () {
$httpBackend.expectGET(jsonLayer0);
var controller = createController();
$rootScope.getFirstLayer();
$httpBackend.flush();
});