如何在茉莉花中单元测试条件语句

时间:2017-07-12 06:23:43

标签: angularjs unit-testing jasmine karma-jasmine

任何人都可以帮助我在jasmine中的函数中测试条件语句

vm.onDisciplineCodeChange = function() {
                if ('other' === vm.selectedDisciplineCode) {
                    vm.selectedDiscipline.code = null;
                    vm.selectedDiscipline.userDefined = true;
                } else if('' === vm.selectedDisciplineCode) {
                    vm.selectedDiscipline = {
                        code: null,
                        userDefined: false,
                        userDefinedDiscipline: null
                    }
                } else {
                    vm.selectedDiscipline = {
                        code: vm.selectedDisciplineCode,
                        userDefined: false,
                        userDefinedDiscipline: null
                    }
                }
                vm.onDisciplineUpdated({discipline: vm.selectedDiscipline});
            };

我对单元测试很陌生,以下是我在生成报告中的输出。

enter image description here

1 个答案:

答案 0 :(得分:1)

你看到了它,因为单元测试没有涉及它 使用以下代码在单元测试中覆盖它

it('if discipline is other', function() {
  // spy on
  spyOn(vm, 'onDisciplineUpdated');

  vm.selectedDisciplineCode = 'other';
  vm.onDisciplineCodeChange();
  expect(vm.selectedDiscipline.code).toBe(null);
  expect(vm.selectedDiscipline.userDefined).toBe(true);
  expect(vm.onDisciplineUpdated).toBeCalledWith({
    discipline: vm.selectedDiscipline
  });
})

it('if discipline is null', function() {
  vm.selectedDisciplineCode = '';
  vm.onDisciplineCodeChange();
  var result = {
    code: null,
    userDefined: false,
    userDefinedDiscipline: null
  };
  expect(vm.selectedDiscipline).toBe(result);
})


it('if discipline is different', function() {
  vm.selectedDisciplineCode = 'nothing';
  vm.onDisciplineCodeChange();
  var result = {
    code: vm.selectedDisciplineCode,
    userDefined: false,
    userDefinedDiscipline: null
  };
  expect(vm.selectedDiscipline).toBe(result);
})