使用部分形状通过 Typescript 进行单元测试

2024-05-01

假设我想在打字稿中对一个函数进行单元测试。 该函数使用具有复杂形状的“选项”类型(对象)参数。

interface option {
  param1 : string
  param2 : number
  param3 : { 
    param4 : string
    param5 : boolean
    }
  .
  .
  .
  param15 : string
}

const functionToTest = (opt:option)=>{
   ...do stuff with option
}

现在假设我想编写一个单元测试,当 param1 更改时模仿 functionToTest 的正确行为,忽略对结果没有影响的其他参数。

据我了解,为了使我的测试更具弹性,我可以用纯 JS 编写

const option1 = {
  param1 : "foo"
}

并进行我的测试

expect(functionToTest(option1)).to.be.true;

但是,如果我用打字稿编写测试,我将不得不编写一个包含所有接口(虚拟)成员的完整 option1 对象,尽管大多数将被忽略,并且它会使读者偏离测试的真正目标。

是否有解决方法,或者我应该改变我的想法?


您可以利用打字稿的Partial https://www.typescriptlang.org/docs/handbook/advanced-types.html为了这。

interface YourInterface {
  prop: string;
  foo: number;
}

const data: Partial<YourInterface> = {   
   prop: 'value'
};

// service is an instance of SomeService
service.sendData(<YourInterface> data);

class SomeService {
  sendData(data: YourInterface) {

  }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用部分形状通过 Typescript 进行单元测试 的相关文章

随机推荐