你如何在角度控制器测试中测试ngForm控制器?

时间:2014-01-02 18:47:43

标签: unit-testing angularjs angularjs-ng-form

当您为表单命名时,将为您创建

ngFormController。

<form name="accountForm">将创建$ scope.accountForm,这样您就可以执行$scope.accountForm.$setPristine()

之类的操作

但是,在我的控制器中,测试accountForm是未定义的,因为我认为它是在解析模板后创建的,我不确定在测试控制器时是否考虑了模板。我怎样才能在测试中嘲笑这个?

1 个答案:

答案 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的所有行为,但我想我只需要知道该方法是否被触发,因为我不应该关注测试角度的功能。