我想知道應該如何測試與Karular測試與Angular.js + UI路由器?Karma測試與Angular.js + UI路由器
我有以下狀態定義:它有兩個解決方案,獲取一些數據併爲控制器準備數據。 (從灰燼背景的,這使得有很大的意義。)
$stateProvider
.state('users', {
resolve: {
getData: function (User) {
return User.query().$promise
},
stateModels: function (getData) {
var models = {}
models.users = getData
return models
}
},
url: '/',
templateUrl: '/views/users/index.html',
controller: 'UsersIndexCtrl'
})
我們UserIndexCtrl樣子:(更是把解決stateModels,並將其分配給$範圍,所以認爲可以用它)
app.controller('UsersIndexCtrl', [
'$scope', '$state', 'stateModels',
function ($scope, $state, stateModels) {
$scope.users = stateModels.users
}])
這是在瀏覽器中運行良好,我看到了正確的結果。但是,當涉及到測試時,它給了我奇怪的錯誤。
下面是一個例子噶單元測試:
describe('controllers', function() {
var $httpBackend
, $rootScope
, $scope
, $state
, $httpBackend
, $controller
beforeEach(module('app'))
beforeEach(inject(function ($injector) {
$state = $injector.get('$state')
$rootScope = $injector.get('$rootScope')
$httpBackend = $injector.get('$httpBackend')
$scope = $rootScope.$new()
$controller = $injector.get('$controller')
}))
it('UserIndexCtrl should exist', inject(function() {
$httpBackend
.expect('GET', '/api/users')
.respond(200, {users: [ {}, {}, {} ]})
$state.go('users')
$rootScope.$apply()
$controller('AdminZonesIndexCtrl', { $scope: $scope, $state: $state });
$rootScope.$apply()
assert.equal($scope.users.length, 3)
}))
})
而且我看到:
[$injector:unpr] Unknown provider: stateModelsProvider <- stateModels
http://errors.angularjs.org/1.3.0-build.2937+sha.4adc44a/$injector/unpr?p0=stateModelsProvider%20%3C-%20stateModels
Error: [$injector:unpr] Unknown provider: stateModelsProvider <- stateModels
http://errors.angularjs.org/1.3.0-build.2937+sha.4adc44a/$injector/unpr?p0=stateModelsProvider%20%3C-%20stateModels
這裏的想法是:
- 我們模擬出的API請求,以致GET請求/ api /用戶將返回一個由3個對象組成的數組。我們期待看到$ scope.users應該是一個由3個對象組成的數組。
- 從這個測試中,我們測試了在路由器中定義的兩個解決方案,並且控制器正確地分配了解析對象。
感謝
比爾
這很好地總結了我的問題。 – Bill
@scarlz,我是mocha-Chai的新手,你能幫我解決類似的問題嗎?http://stackoverflow.com/questions/28606056/mocha-chai-test-case-for-angular-configuration-file – mayank
這幾乎總結了我的生活。 – Igor