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);
});