1

我正在使用Angularjs + grunt + karma +茉莉花。這是我如何寫在我的控制器的功能:測試函數的形式作爲angularjs與業力和茉莉花的參數

Vm.find = function(form){ 
/* code lines */ 
}; 

我已經在視圖方面用ng-click調用函數。

<form name="form"> 
<input/> 
<input/> 
<input/> 
<button ng-click(Vm.find(form))></button> 
</form> 

現在我很在意如何在單元測試中用形參作爲參數調用函數。我正在使用測試規範文件中的以下代碼來獲取模板html。但不知道如何觸發該功能。

html = templateCacheMock.get('modules/reports/partials/renewals/generate-renewals.htm'); 
    complied = angular.element(html); 
    element = compileMock(complied)(scope); 
    element.find('.find-btn').triggerHandler('click'); 

請有人指導我。我對單元測試完全陌生。

回答

1

由於您使用的是ng-click,因此被調用的函數必須是$scope對象的一部分。因此,聲明應該是:

$scope.Vm.find = function (...) {...}; 
+0

表單參數呢? – winnyboy5

+1

您可以使用'ng-mode'將每個輸入綁定到'$ scope'元素。一旦完成,Angular將在JavaScript變量和HTML元素之間建立一個雙向綁定。例如,假設你在其中一個輸入字段中添加了'ng-model =「first_name」';在JavaScript中,你將有一個名爲'$ scope.first_name'的變量,它將包含輸入到輸入字段中的任何內容。同樣,如果您在JavaScript中更改變量的值,則更改將自動反映到HTML頁面中。 – FDavidov