是否可以使用Protractor测试未绑定到DOM的变量的值?

Que*_*lan 2 testing angularjs protractor

我对Angular和新的(今天)对Protractor比较新,所以我不确定如何提出这个问题 - 因此我不太确定那里是否有重复.下面是我们正在开发的更大,更复杂的应用程序的非常简化版本,但基本思想是相同的.

假设我有一个简单的网页:

<input id="my-input" ng-model="myValue">
<button id="submit-button" ng-click="doSomething()">
    Click Me
</button>
Run Code Online (Sandbox Code Playgroud)

由简化的角度应用程序控制:

// some-angular-app.js

$scope.myValue = "";
$scope.computedValue = null;

$scope.doSomething = function() {
    $scope.computedValue = "Hello World";
}
Run Code Online (Sandbox Code Playgroud)

基本上,当您单击按钮时,它会触发一个操作应用程序中变量的函数.在我们的例子中(如上所述),变量(即$scope.computedValue)不以任何方式绑定到DOM - 实际上它们被编译并传递给我们的API使用的JSON请求.但是,我想测试这些值 - 例如:

// some-protractor-test.js

describe('form submission', function() {
    it('should corretly set the computed value', function() {
        browser.get('http://our.awesome-web.page');
        element(by.css("#my-input")).sendKeys("Hello Input");
        element(by.css("#submit-button")).click();

        // ??? how to check that computedValue === "Hello World" ???
    });
});
Run Code Online (Sandbox Code Playgroud)

可以使用Protractor以这种方式检查数据的状态,还是必须通过DOM元素处理与Angular应用程序的所有交互?

ale*_*cxe 5

我认为这是您需要检查服务,指令或控制器的单元测试.想想您protractor的端到端测试,关于在浏览器中打开您的应用程序的真实用户,点击一些按钮并观察一些数据 - 黑盒方法,而不是潜入技术细节,所有这些都是通过量角器 - 浏览器交互完成的.protractor旨在自动化伪造真实用户的浏览器操作 - 保持在更高级别.