location.path上的以下间谍失败并显示错误:
尝试将未定义的属性路径包装为函数
it('should redirect location.path', function() { sinon.spy(location, 'path'); scope.create(); expect(location.path).to.have.been.calledOnce; location.path.restore();
模拟控制器:
describe('AdminUsersController', function() {
var Users;
beforeEach(inject(function(_$controller_, $rootScope, $location, _Users_, _$httpBackend_) {
var location;
scope = $rootScope.$new();
location = $location;
controller = _$controller_('AdminUsersController', {
$scope: scope,
$location: location
});
我尝试测试的行:
$scope.create = function() {
return $location.path("admin/users/newuser?create");
};
答案 0 :(得分:0)
这个问题的解决方案是另一个愚蠢的coffeescript事情。我之前没有定义过位置。我的代码,在coffeescript中,如下:
describe 'AdminControllers', () ->
scope = undefined
location = undefined
$httpBackend = undefined
beforeEach module 'heliotrope.controllers.admin'
describe 'AdminUsersController', () ->
beforeEach inject (_$controller_, $rootScope, $location, _Users_, _$httpBackend_) ->
scope = $rootScope.$new()
location = $location
controller = _$controller_ 'AdminUsersController', {
$scope: scope
$location: location
}
$httpBackend = _$httpBackend_
describe 'creating a new user', () ->
it 'should redirect location.path', () ->
sinon.spy(location, 'path')
scope.create()
expect(location.path).to.have.been.calledOnce
location.path.restore()