在Typescript中测试类私有属性访问器时遇到问题

时间:2018-04-23 13:07:20

标签: javascript class typescript testing jest

我已经为类的 getter setter 编写了测试代码。

即使我还没有实际编写 getter setter 。 测试通过了。

我很好奇......

  • 错误的测试代码?
  • 我可以测试getter和setter行为吗?
  • 有没有更好的方法来测试getter和setter?
// Code
class PersonalInfo {
  public name: string = 'kevin';
  private _ssn: string = '123-45-XXXX';

  // I will write getter, setter for _ssn like below. Now now.

  // get ssn(): string {
  //   return this._ssn;
  // }

  // set ssn(newSSN: string) {
  //   this._ssn = newSSN;
  // }
}

// TestCode
describe('Testing getter, setter', () => {
  it('Test whether getter and setter are working correctly', () => {
    const personalInfo = new PersonalInfo();
    personalInfo.ssn = 'XXX-12-3456' // set ssn

    expect(personalInfo.ssn).toBe('XXX-12-3456'); // get ssn
  })
})

即使没有写入getter setter,测试也通过了

Testing getter, setter
  ✓ Test whether getter and setter are working correctly (1ms)

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

测试执行已转换的JavaScript,而不是TypeScript,因此代码可以正确执行,因为在测试中,您只需向personalInfo对象添加新属性。 TypeScript唯一做的是指示错误,因为类型PersonalInfo没有ssn属性。但是,即使存在编译器错误,TypeScript编译器仍会生成转换后的JavaScript。