我不认为它ng-init
本身会创建任何功能,所以我认为这只是一种错误的使用方式(从你的片段来看)。
我通常做的是自己创建 init 函数,然后在控制器的单元测试中毫无问题地对其进行测试。
<div ng-controller="my-ctrl" ng-init="init({ updateUrl : 'list_json' })">...</div>
function MyController($scope){
$scope.init = function(config) {
$scope.updateUrl = config.updateUrl;
}
}
然后在 Jasmine 中,您可以毫无问题地编写一个调用该init()
函数的测试(跳过样板文件):
// Given
var config = { updateUrl : 'list_json' };
// When
myController.init(config);
// Then
// ...
关于单元测试的重要评论
如果你认为你应该测试你的 HTML 标记是否init()
使用给定的参数调用,那么我认为你错了。根本没有什么可以测试的。那里根本没有逻辑!你的测试应该验证组件的工作方式,如果程序员在将错误的参数从 HTML 传递到 Angular 时犯了错误,那么你不应该为在单元测试中覆盖这些错误而烦恼。你不能强迫人们不要犯错误:-)