Как написать тест карма-жасмин для значений внутри объекта, присоединенного в функции для контроллера, написанного в стиле Джона Папа

0

Так выглядит мой контроллер:

(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);
    }
   }
})();

следующие характеристики в карме вернули успех при тестировании,

it('should define vmCtrl', function() {
  expect(vmCtrl).toBeDefined();
});

it('should define submitForm', function() {
  expect(vmCtrl.submitForm).toBeDefined();
});

Теперь можно проверить значения внутри объекта formValues? Например, если мне нужно проверить возраст, используя.toEqual(18)

Как написать спецификацию для этого случая?

Теги:
karma-jasmine

2 ответа

0
Лучший ответ

Сначала необходимо вызвать метод, а затем проверить значение.

it('should define submitForm', function () {
  vmCtrl.submitForm();
  expect(vmCtrl.formValues.age).toEqual(18);
  expect(vmCtrl.formValues.mobno).toEqual(21234);
});
0

Да, javascript действительно не имеет понятия о частных переменных. Поэтому вы можете написать следующее:

it('should initialize formValues.age', function () {
    expect(vmCtrl.formValues.age).toEqual(18);
});

Просто имейте в vmCtrl.submitForm(), что для прохождения этого теста вам сначала нужно будет вызвать vmCtrl.submitForm() и для того, чтобы это сработало, вам нужно было бы правильно API.post()

Ещё вопросы

Сообщество Overcoder
Наверх
Меню