【问题标题】:Having trouble testing class private property accessor in Typescript在 Typescript 中测试类私有属性访问器时遇到问题
【发布时间】:2018-04-23 21:12:20
【问题描述】:

我已经为类的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)

感谢您的帮助!

【问题讨论】:

    标签: javascript class typescript testing jestjs


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多