ngFormController。
<form name="accountForm">
将创建$ scope.accountForm,这样您就可以执行$scope.accountForm.$setPristine()
但是,在我的控制器中,测试accountForm
是未定义的,因为我认为它是在解析模板后创建的,我不确定在测试控制器时是否考虑了模板。我怎样才能在测试中嘲笑这个?
答案 0 :(得分:2)
我刚才有同样的问题。我最终做的是使用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
的所有行为,但我想我只需要知道该方法是否被触发,因为我不应该关注测试角度的功能。