我在寫一個簡單的AngularJS 1.x web應用程序。AngualrJS with Karma - 如何爲工廠編寫單元測試?
我有一個模塊:
main.js:
var app = angular.module('app', []);
factory.js
app.factory('DataFactory', function(){
var DataService = {};
DataService.something = function() {
return 5;
};
return DataService;
});
controller.js
app.controller('DataController', function ($scope, DataFactory) {
$scope.searchText = null;
$scope.results = DataFactory.something();
});
的index.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
</script>
</head>
<body ng-app="app" ng-controller="DataController">
<script src="app.js"></script>
<script src="factory.js"></script>
<script src="controller.js"></script>
</body>
</html>
測試文件:
describe('Data Factory Test', function() {
var Factory;
beforeEach(function() {
angular.module('app');
});
beforeEach(inject(function() {
var $injector = angular.injector(['app']);
Factory = $injector.get('DataFactory');
}));
it('is very true', function(){
expect(Factory).toBeDefined();
// var output = Factory.something();
// expect(output).toEqual(5);
});
});
karma.conf.js:
frameworks: ['jasmine'],
// list of files/patterns to load in the browser
files: [
'node_modules/angular/angular.js',
'node_modules/angular-mocks/angular-mocks.js',
'app.js',
'factory.js',
'controller.js',
'test/*.js'
]
我怎樣寫一個單元測試,以檢查是否於工廠存在,並檢查的東西回報?
我不斷收到一個錯誤,當我運行因果報應的開始: 錯誤:[$注射器:modulerr]未能實例化模塊的應用程序,因爲: 錯誤:[$注射器:unpr]未知提供商:$ controllerProvider
編輯:我得到它的工作。我將如何爲帶控制器和不帶工廠的單元測試編寫?
請張貼你在你的測試規範也一樣。 –
在測試中 - 你有'OlympicDataFactory',但在你使用'DataFactory'的代碼中 - 有一個是正確的? –