javascript - AngularJS 中依赖表单验证的单元测试 Controller

标签 javascript validation angularjs

在我的 Controller 中,我只想在表单有效时调用一个 Action (比如按 Tab 键)。我还需要在成功提交表单后立即清除表单。我有这样的东西

app.controller('CommentFormController', function($scope) {
  $scope.submit = function() {
    if($scope.commentForm.$valid) {
      // submit form
      $scope.comment = '';
      $scope.commentForm.$setPristine();
    }
  }
});

我想对此进行测试,但看起来我必须手动创建此 $scope.contactForm 并 stub $setPristine() 函数。

还有其他方法可以测试吗?我的意思是我能以某种方式在我的测试中获取底层 FormController 的实例吗?

你如何处理这种情况?

最佳答案

将表单设置为 pristine 会影响表单的状态,但不会将表单重置为您的默认值(如果您提供了默认值)。相反,您可以使用 DOM 元素方法 reset()。

像这样:

document.getElementById("yourform").reset();

或者,由于 angularJS 和 jQuery 可以很好地发挥作用,您可以使用 css 选择器(如果您有多个表单要同时清除,这尤其有用。

所以像这样:

$("#yourform")[0].reset();

也有纯 javascript 方法可以做到这一点: http://www.javascript-coder.com/javascript-form/javascript-reset-form.phtml

--- 因此总而言之,您不需要使用特定方法来执行此操作,只需使用 DOM 方法、jQuery 或纯 javascript。谷歌可能很快就会想出办法来做到这一点。希望这会有所帮助。

关于javascript - AngularJS 中依赖表单验证的单元测试 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19156613/

相关文章:

javascript - 如果服务不可用,gapi.client 是否应该优雅地失败?

javascript - 在 asp.net 中,如何根据另一个字段的值动态隐藏一个字段?

javascript - 使用 jQuery 规避 tabindex 问题

Javascript:如何从事件回调函数访问对象成员

javascript - 内部错误 : too much recursion <div ng-view ="" class ="ng-scope">

表单提交后验证重置

ASP.NET:仅在单击“提交”时执行验证

jquery - 将嵌套错误包装器与 jQuery 验证插件一起使用

javascript - AngularJS 或 Backbone 适合初学者

javascript - 使用 css 渐变和 javascript 创建动画