这就是我的控制器的样子:
(function() {
'use strict';
angular.module('myApp', [])
.controller('vmCtrl', vmCtrl);
vmCtrl.$inject = ['$state', 'API', 'serviceConfig'];
function vmCtrl($state, API, serviceConfig) {
var vm = this;
vm.formValues = {};
vm.submitForm = function() {
vm.formValues = {
"name": vm.formValues.name,
"age": "18",
"schoolId": vm.formValues.schoolId,
"mobno": "21234"
};
var url = serviceConfig.BASE_URL + 'details';
API.post(url, vm.formValues)
.then(submitForm_success)
.catch(submitForm_error);
}
}
})();
karma中的以下规范在测试中返回成功,
it('should define vmCtrl', function() {
expect(vmCtrl).toBeDefined();
});
it('should define submitForm', function() {
expect(vmCtrl.submitForm).toBeDefined();
});
现在可以测试对象formValues中的值吗?就像我需要使用.toEqual(18)
测试年龄一样我应该如何编写此案例的规范?
答案 0 :(得分:0)
是的,javascript并没有任何私有变量的概念。所以你可以写下面的内容:
it('should initialize formValues.age', function () {
expect(vmCtrl.formValues.age).toEqual(18);
});
请注意,要通过该测试,您首先需要致电vmCtrl.submitForm()
并为了使其正常工作,您需要正确模拟API.post()
答案 1 :(得分:0)
您需要先调用该方法,然后检查该值。
it('should define submitForm', function () {
vmCtrl.submitForm();
expect(vmCtrl.formValues.age).toEqual(18);
expect(vmCtrl.formValues.mobno).toEqual(21234);
});