0
我正在用Karma和Jasmine編寫我的第一個Angular app測試。
我有這個功能的控制器:
function getMyLists() {
getLists.getOne().then(function(listOne) {
$scope.list1 = listOne[0];
list1Available = true;
});
getLists.getTwo().then(function(listTwo) {
$scope.list2 = listTwo;
list2Available = true;
});
}
getMyLists();
我已經在測試
describe('MainCtrl', function() {
var rootScope, scope, controller, myService;
beforeEach(angular.mock.module('myApp'));
beforeEach(inject(function($rootScope, $controller, $q) {
rootScope = $rootScope;
scope = $rootScope.$new();
myService = {
getOne: function(){
// mock promise
var deferred = $q.defer();
deferred.resolve([
{
"one": 1
},
{
"type": list
}
]);
return deferred.promise;
},
getTwo: function(){
// mock promise
var deferred = $q.defer();
deferred.resolve([
{
"two": 2
},
{
"type": list
}
]);
return deferred.promise;
}
}
controller = $controller('MainCtrl', {
$scope: scope,
myService: myService
});
}));
it('should call myService service and populate the array', function(){
scope.$digest();
expect(scope.list1.length).toBeGreaterThan(0);
});
});
這個偉大的工程嘲笑了服務,我有一個測試通過,因爲我期望的那樣。但是當我嘗試和測試下面的例子時,我總是收到錯誤。
expect(scope.list2.length).toBeGreaterThan(0);
Expected undefined to be greater than 0.
expect(list1Available).toEqual(false);
ReferenceError: Can't find variable: list1Available
就像我說的這些是我的第一次測試,所以任何幫助表示讚賞!