方法内部的角度测试分支

分享于2022年07月17日 angular jasmine typescript unit-testing 问答
【问题标题】:方法内部的角度测试分支(Angular test branches inside method)
【发布时间】:2022-01-24 09:33:28
【问题描述】:

我的 TS 文件中有这个方法,

里面有3个分支。

在茉莉花的角度,我如何测试所有这些分支?

getAges(ages: Ages) {
    if (ages) {
      return ages.number ? 10 : 20;
    }
    return 30;
  }

  • This 可能是开始测试的好书。那篇文章应该非常详细地介绍您的案例。简而言之:就像使用指向正确分支的参数调用函数一样简单。
  • 你也不需要 if(ages) ,因为除了 Ages ,打字稿不允许这个方法被调用。 return 30 因此永远无法到达。

【解决方案1】:

这样你就可以全部三个路径:

class TestClass {

  getAges(ages: any) {
    if (ages) {
      return ages.number ? 10 : 20;
    }
    return 30;
  }
}

describe('getAges', () => {
  const subject: TestClass = new TestClass();

  it('when no ages are provided', () => {
    expect(subject.getAges(null)).toBe(30);
  });

  it('ages has a value', () => {
    const ages = { number: 5 };
    expect(subject.getAges(ages)).toBe(10);
  });

  it('ages does not have a value', () => {
    const ages = {};
    expect(subject.getAges(ages)).toBe(20);
  });
});

此处仅以TestClass为例。