当您为表单命名时,会为您创建 ngFormController。
<form name="accountForm">
将创建 $scope.accountForm 这允许您执行以下操作$scope.accountForm.$setPristine()
但是,在我的控制器中,测试accountForm
是未定义的,因为我认为它是在解析模板后创建的,而且我不确定在测试控制器时是否考虑过模板。我怎样才能在测试中模拟这个?
当您为表单命名时,会为您创建 ngFormController。
<form name="accountForm">
将创建 $scope.accountForm 这允许您执行以下操作$scope.accountForm.$setPristine()
但是,在我的控制器中,测试accountForm
是未定义的,因为我认为它是在解析模板后创建的,而且我不确定在测试控制器时是否考虑过模板。我怎样才能在测试中模拟这个?
我刚遇到同样的问题。我最终做的是使用 sinon.stub 制作一个假的表单对象。该对象具有以下属性:
form = {$valid: true, $pristine: false, $dirty: true, $setPristine: function () {scope.newItemForm.$dirty = false, scope.newItemForm.$pristine = true;}};
然后我将那个假设置为等于我的范围的 newItemForm。
scope.newItemForm = form;
然后我测试了行为是否正确,scope.newItemForm.$dirty = false and scope.newItemForm.$pristine = true
何时$setPristine
触发以及何时不应该触发。
这并没有模拟 的所有行为$setPristine
,但我想我只需要知道该方法是否被触发,因为我不应该担心测试 angular 的功能。