我在控制器中有一个函数,在其中创建一个新的作用域并在该作用域上定义函数。
function exampleController($rootScope) {
let vm = this;
vm.openDialog = openDialog;
function openDialog() {
let scope = $rootScope.$new(true);
scope.exampleFunction = () => {
scope.value1 = 123;
//doMoreThings
};
ngDialog.open({
template: 'template/path',
scope
});
}
这是一个非常基本的示例,只是为了说明我正在谈论的情况。
有什么方法可以测试示波器上定义的功能?我尝试在控制器上定义函数并设置范围函数,如下所示:
scope.exampleFunction = exampleFunction;
我猜这是我需要走的路,但是由于该函数需要访问作用域本身,所以这不太成功。这个问题是我不知道如何在html中将范围作为参数传递。
我只是问一下,因为我正在使用的功能已经变得很大,并且在未经测试的情况下大大减少了代码覆盖率。
任何帮助表示赞赏!
答案 0 :(得分:0)
我想出了一种解决方法,因此您可以在测试规范中访问作用域变量。 本质上,您监视新作用域的创建,并返回自己可以访问的对象。像这样:
describe('openDialog', () => {
it('should carry out exampleFunction', () => {
let scope = {};
spyOn($rootScope, '$new').and.returnValue(scope);
controller.openDialog();
scope.exampleFunction();
//expect some condition resulting from exampleFunction
});
});