从 CasperJS 调用 AngularJS 函数
Call AngularJS Function from CasperJS
我在控制器中有一个指令。我正在尝试编写单元测试来测试执行此代码时会发生什么。代码不是从点击事件或任何东西中调用的,而是从 socket.io
发出的。而不是试图模拟 socket.io
我试图直接从 casper.js 调用函数而不是 phantom.js
这里是指令
// exposed to UI with a poniter
scope.testingText = testingText;
function testingText(int, string) {
return int + string;
}
我在casper套件中的功能是:
function callDirectiveJavascript() {
casper.evaluate(function () {
var test = scope.testingText(100, 'string');
console.log('test:' + test);
});
}
console.log
语句从不计算。当我 运行
casper.on( 'page.error', function (msg, trace) {
this.echo( 'Error: ' + msg, 'ERROR' );
});
scope
未定义。试图弄清楚如何访问我的指令的范围。
有什么想法吗?除了 console.log
,我还看到有人使用此实现通过 casper
调用 js
,但没有看到它特定于 angularjs
将此标记为重复的评论有助于解决问题,但我不认为是完全重复的。它没有解决指令上的访问函数。
如果在指令范围声明中将项目传递给指令
部分指令声明
var directive = {
restrict: 'A',
replace: true,
scope: {
denominations: '='
},
templateUrl: '/app/myPath.html',
link: link
};
HTML 已嵌入指令的控制器
<div id="denominations" cr-denominations denominations="vm.denominations"></div>
访问指令作用域的语法如下
angular.element(document.getElementById('elementId')).children().scope().theFunctionINeeded(dataObject);
如果您没有将项目传递到指令中。我相信你可以使用:
scope: true
在指令声明中,您将不需要使用 .children() 符号。
我在控制器中有一个指令。我正在尝试编写单元测试来测试执行此代码时会发生什么。代码不是从点击事件或任何东西中调用的,而是从 socket.io
发出的。而不是试图模拟 socket.io
我试图直接从 casper.js 调用函数而不是 phantom.js
这里是指令
// exposed to UI with a poniter
scope.testingText = testingText;
function testingText(int, string) {
return int + string;
}
我在casper套件中的功能是:
function callDirectiveJavascript() {
casper.evaluate(function () {
var test = scope.testingText(100, 'string');
console.log('test:' + test);
});
}
console.log
语句从不计算。当我 运行
casper.on( 'page.error', function (msg, trace) {
this.echo( 'Error: ' + msg, 'ERROR' );
});
scope
未定义。试图弄清楚如何访问我的指令的范围。
有什么想法吗?除了 console.log
,我还看到有人使用此实现通过 casper
调用 js
,但没有看到它特定于 angularjs
将此标记为重复的评论有助于解决问题,但我不认为是完全重复的。它没有解决指令上的访问函数。
如果在指令范围声明中将项目传递给指令
部分指令声明
var directive = {
restrict: 'A',
replace: true,
scope: {
denominations: '='
},
templateUrl: '/app/myPath.html',
link: link
};
HTML 已嵌入指令的控制器
<div id="denominations" cr-denominations denominations="vm.denominations"></div>
访问指令作用域的语法如下
angular.element(document.getElementById('elementId')).children().scope().theFunctionINeeded(dataObject);
如果您没有将项目传递到指令中。我相信你可以使用:
scope: true
在指令声明中,您将不需要使用 .children() 符号。