2016-10-31 80 views
2

我使用service $ uibModal创建模态窗口。我需要确保模板文件存在。

(function() { 
angular.module('some.module.name').factory('serviceName', function ($uibModal) { 
    function open() { 
     return $uibModal.open({ 
      templateUrl: 'path/to/template.html', 
      controller: 'ControllerName', 
      resolve: { 
       context: function() { 
        return something; 
       } 
      } 
     }); 
    } 

    return { 
     open: open 
    }; 
}); 
})(); 

我可以用这样的方式的静态路径检查:

it('should pass a config object when opens the modal window', function() { 
    expectedOptions = { 
     templateUrl: 'path/to/template.html', 
     controller: 'ControllerName', 
      resolve: { 
       context: jasmine.any(Function) 
      } 
    }; 
    serviceName.open(); 
    expect($uibModal.open).toHaveBeenCalledWith(jasmine.objectContaining(expectedOptions)); 
}); 

但我会需要修改这个测试,如果模板路径将被改变。

如何检查模态窗口是否接收到未经测试修改的现有模板?

在此先感谢!

+1

如果你能得到'$ templateCache模板你可以检查' –

+0

@AlekseyL。,非常感谢!这是相当的事情。 – ArtemM

回答

1

我认为你的测试应该检查你的模板中的内容是否加载到模态窗口中,而不是检查模板文件是否存在。要做到这一点,你必须在Jasmine中使用ngMock。 您可以找到source code of AngularUI Bootstrap 下面是我的解决方案里面类似的测试工作示例(这不是真正的代码,只是为例):

describe('Modal window', function() { 
    var $rootScope, 
     $uibModal, 
     $compile, 
     modal; 


    beforeEach(module('ui.bootstrap.modal')); 

    beforeEach(inject(function(_$rootScope_, _$compile_, _$uibModal_) { 
     $rootScope = _$rootScope_; 
     $compile = _$compile_; 
     $uibModal = _$uibModal_; 

     var modalOptions = { 
      templateUrl: 'path/to/template.html', 
      controller: 'ControllerName', 
      resolve: { 
       context: jasmine.any(Function) 
      } 
     }; 

     var modal = $uibModal.open(modalOptions); 
     $rootScope.$digest(); 

    })); 

    it('should load "Hello World" from template', function { 
     var contentToCompare = actual.find('body > div.modal > div.modal-dialog > div.modal-content'); 
     var result = contentToCompare.html().indexOf('Hello World'); 
     expect(result).toBeGreaterThan(0); 
    }); 
}); 
+1

谢谢。我对模板内容一无所知。它甚至可以是空的。我想确保这个呼叫选项不包含错误并存在适当的文件。 – ArtemM

相关问题