Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 是否可以使用量角器测试未绑定到DOM的模型变量的值?_Angularjs_Testing_Protractor - Fatal编程技术网

Angularjs 是否可以使用量角器测试未绑定到DOM的模型变量的值?

Angularjs 是否可以使用量角器测试未绑定到DOM的模型变量的值?,angularjs,testing,protractor,Angularjs,Testing,Protractor,我对角度和量角器都比较陌生,所以我不确定该怎么问这个问题,所以我不确定是否有重复的。下面是我们正在开发的一个更大、更复杂的应用程序的一个非常简化的版本,但基本思想是相同的 假设我有一个简单的网页: <input id="my-input" ng-model="myValue"> <button id="submit-button" ng-click="doSomething()"> Click Me </button> 本质上,当你点击这个按钮时,它

我对角度和量角器都比较陌生,所以我不确定该怎么问这个问题,所以我不确定是否有重复的。下面是我们正在开发的一个更大、更复杂的应用程序的一个非常简化的版本,但基本思想是相同的

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

<input id="my-input" ng-model="myValue">
<button id="submit-button" ng-click="doSomething()">
    Click Me
</button>
本质上,当你点击这个按钮时,它会触发一个函数,该函数会操纵你应用程序中的变量。在我们的例子中(如上所述),变量(即
$scope.computedValue
)没有以任何方式绑定到DOM——它们实际上被编译并传递给JSON请求,供我们的API使用。但是,我想测试这些值,比如:

// 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" ???
    });
});

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

我认为这是您需要在服务、指令或控制器的单元测试中检查的内容。把你的
量角器
端到端测试想象成一个真实的用户,他在浏览器中打开了你的应用程序,点击了一些按钮并观察了一些数据-黑盒方法,而不是潜入技术细节,所有这些都是通过量角器浏览器交互完成的<代码>量角器设计用于自动执行浏览器操作,假装真实用户-停留在更高级别。

您还可以使用evaluate()检索模型值:

groupCode.evaluate('groupCode').then(function(value) {
    console.log(value);
});

是的,经过几天的思考,我发现你的答案是非常好的建议——我们应该努力将端到端测试与功能测试和单元测试分开。这基本上暴露了我在单元测试中没有足够的覆盖率:)我有一个问题:随着项目的发展,我们开始衍生一个子项目,其中只包含自定义输入指令。现在我要为这些输入编写量角器测试,这是相当低的级别(绑定、单击、事件处理…)。你仍然认为你的ANS对这种情况有效吗?
groupCode.evaluate('groupCode').then(function(value) {
    console.log(value);
});