javascript - Karma 覆盖范围无法识别分支测试

标签 javascript angularjs unit-testing jasmine karma-runner

我的 karma 覆盖率报告指出,下面的示例未涵盖我的“else”分支,但它已经过测试。知道为什么 karma-coverage 无法识别我的测试吗?

utilities.service.js:

function formatValue(value, form) {

  if (form === '2') {
    valueFormatted = twoDecimals(value);
  } else if (form === '4') {
    valueFormatted = fourDecimals(value);
  }

  return valueFormatted + '!';
}

utilitiesServiceSpec.js:

describe('format values', function() {
  var formattedValue;
  var value;
  var form;

  it('should format 2 decimal places', function() {
    value = 100;
    form = '2';
    formattedValue = utilitiesService.formatValue(value, form);
    expect(formattedValue).toEqual('100.00!');
  });

  it('should format 4 decimal places', function() {
    value = 100;
    form = '4';
    formattedValue = utilitiesService.formatValue(value, form);
    expect(formattedValue).toEqual('100.0000!');
  });
});

最佳答案

事实上 karma 覆盖是正确的。您错过了测试 else 分支。

describe( 'format values', function() {
var formattedValue;
var value;
var form;
// Will test if (form === '2')
it( 'should format 2 decimal places', function() {
    value = 100;
    form = '2';
    formattedValue = utilitiesService.formatValue( value, form );
    expect( formattedValue ).toEqual( '100.00!' );
} );

// Will test else if (form === '4')
it( 'should format 4 decimal places', function() {
    value = 100;
    form = '4';
    formattedValue = utilitiesService.formatValue( value, form );
    expect( formattedValue ).toEqual( '100.0000!' );
} );
//Will test else
it( 'should test if value should not be formatted to decimal if form is other than 2 and 4', function() {
    value = 100;
    form = '5';
    formattedValue = utilitiesService.formatValue( value, form );
    expect( formattedValue ).toEqual( '100!' );
} );} );

考虑你的utilities.service.js

function formatValue( value, form ) {
var valueFormatted = value;
if ( form === '2' ) {
    valueFormatted = twoDecimals( value );
} else if ( form === '4' ) {
    valueFormatted = fourDecimals( value );
}

return valueFormatted + '!';}

function formatValue( value, form ) {
var valueFormatted;
if ( form === '2' ) {
    valueFormatted = twoDecimals( value );
} else if ( form === '4' ) {
    valueFormatted = fourDecimals( value );
} else {
    valueFormatted = value;
}

return valueFormatted + '!';}

关于javascript - Karma 覆盖范围无法识别分支测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31387664/

相关文章:

javascript - 仅显示段落的前两行

javascript - 如何设置 img 标签的 src?

javascript - 如何从常规 Javascript 函数访问 angularjs 常量

javascript - Angularjs 指令附加 $http 请求

jquery - AngularJS - 在 $(document).ready 上的 ng-repeat 循环内定位元素

visual-studio - 不使用鼠标运行 NUnit 测试?

android - 如何运行传递给模拟方法的 lambda 函数?

javascript - 使用隐藏输入检索用户数据是否安全?

javascript - AngularJS 计算 JSON 数组中 ID 等于的项目数

PHPT - 无法运行使用 --POST_RAW-- 的示例测试