0
이 각도/재스민 테스트에서는 http
서비스를 사용하는 컨트롤러가 있습니다. 이 서비스는 services
폴더의 http.js
파일에 있습니다.Karma/Jasmine 필요한 파일을 찾을 수 없습니다.
문제점 (아래 오류 참조)은 karma.conf.js
에 명시 적으로 선언 했음에도 불구하고 Karma/Jasmine이 http
서비스를 찾지 못한다는 것입니다. 무엇이 문제 일 수 있습니까?
PhantomJS 2.1.1 (Windows 8 0.0.0) Testing Bank management should retrieve bank list FAILED
Error: [$injector:unpr] http://errors.angularjs.org/1.4.8/$injector/unpr?p0=httpProvider%20%3C-%20http (line 41)
libs/angular/angular.min.js:41:146
[email protected]/angular/angular.min.js:39:93
libs/angular/angular.min.js:41:198
[email protected]/angular/angular.min.js:39:93
[email protected]/angular/angular.min.js:39:363
[email protected]/angular/angular-mocks.js:2439:26
[email protected]/angular/angular-mocks.js:2411:41
test/web/admin/banks/mngbanks.test.js:44:10
[email protected]://localhost:9876/context.js:151:17
undefined
TypeError: undefined is not an object (evaluating 'deferred.resolve') in test/web/admin/banks/mngbanks.test.js (line 70)
test/web/admin/banks/mngbanks.test.js:70:12
[email protected]://localhost:9876/context.js:151:17
PhantomJS 2.1.1 (Windows 8 0.0.0): Executed 3 of 3 (1 FAILED) (0.016 secs/0.021 secs)
Warning: Task "karma:unit" failed. Use --force to continue.
karma.conf.js :
module.exports = function(config) {
config.set({
basePath: 'c:/apps/public/',
frameworks: ['jasmine'],
files: [
'libs/angular/angular.min.js',
'libs/angular/angular-mocks.js',
'app/web/app.js',
'app/services/http.js', // <-- service is in this file
'app/**/*.js',
'test/**/*.js'
],
exclude: [
],
preprocessors: {},
reporters: ['progress'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['PhantomJS'],
singleRun: true,
concurrency: Infinity
})
}
재스민 시험 :
문제는 주입 된 서비스의 종속성은 .js 파일 목록에 포함되지 않은 것을describe('Testing management', function() {
var $scope;
var deferred;
var list = {
data: {
acc: 2,
bnks: [
{sk:1, nm:"Bank 1", dsc:"Bank 1 description",als:"BK1"},
{sk:2, nm:"Bank 2", dsc:"Bank 2 description",als:"BK2"},
{sk:3, nm:"Bank 3", dsc:"Bank 3 description",als:"BK3"}
]
}
};
var ConstantsMock = {
ReadMany: 'M'
};
function NgTableParamsMock() {
}
beforeEach(function() {
module(moduleName);
module(function ($provide) {
$provide.value('NgTableParams', NgTableParamsMock);
$provide.value('Constants', ConstantsMock);
});
inject(function($controller, _$rootScope_, $q, http, $timeout) {
$scope = _$rootScope_.$new();
console.log("scope:"+$scope)
deferred = $q.defer();
spyOn(http, 'call').and.returnValue(deferred.promise);
$controller('mngBanksCtl', {
$rootScope: _$rootScope_,
$scope: $scope,
$timeout: $timeout,
http: http,
NgTableParams: NgTableParamsMock,
Constants: ConstantsMock
});
});
});
it('should retrieve list', function() {
deferred.resolve(list);
$scope.$apply();
expect($scope.data).toBe(list);
});
});
자스민 테스트 코드를 추가하십시오. –
테스트를 추가했습니다. – ps0604
어떤 모듈이 http 서비스입니까? –