从 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() 符号。