2014-10-09 85 views
0

为什么此测试失败,并且:预期为null是“这是一方”。 我试图嘲笑派对服务返回假价值,但它不工作。使用茉莉花正确嘲笑服务的角度

'use strict'; 
describe("test controller: ConsultationService", function() { 
    var scope; 
    var controller; 
    var partyService = { 
     get: function() {} 
    } 

    beforeEach(angular.mock.module('aureus')); 
    beforeEach(function() { 
     module(function($provide) { 
      $provide.value('partyService', partyService); 
     }); 
    }); 
    beforeEach(inject(function ($rootScope, $controller, $q) { 
     spyOn(partyService, 'get').and.callFake(function() { 
      var deferred = $q.defer(); 
      deferred.resolve('this is a party'); 
      return deferred.promise; 
     }); 
     scope = $rootScope.$new(); 
     controller = $controller('ConsultationController', { $scope: scope, $partyService: partyService }); 
    })); 

    it("scope consultation should be defined", function() { 
     expect(scope.consultation).toBe(null); 
     expect(scope.party).toBe('this is a party'); 
    }); 
}); 

与此控制器

aureus.controller('ConsultationController', 
    ['$scope', '$location', '$http', 'ngProgress', 'partyService', 'ConsultationService', 
    function ($scope, $location, $http, ngProgress, $partyService, consultationService) { 
     $scope.consultation = null; 
     $scope.party = null; 
     $scope.urlData = Api.parseUrl($location.$$absUrl, '/comments/{account}'); 
     $partyService.get($scope.urlData.account).then(function (party) { 
      $scope.party = party; 
     }); 

回答

0

您需要使用deferreds时,在您的测试运行$scope.$digest。该行添加到您的测试:

scope.$digest() 

这将导致推迟到真正解决您的代码将达到then回调。