假设我想在打字稿中对一个函数进行单元测试。 此函数使用具有复杂形状的“选项”类型(对象)参数。
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(param1)).to.be.true;
但是,如果我用typescript编写我的测试,我将不得不用所有接口(虚拟)成员编写一个完整的option1对象,尽管大多数会被忽略,它会使读者偏离真正的目标。测试
是否有关于此问题的解决方法或我应该改变的事情?
答案 0 :(得分:1)
您可以将params声明为可选。
interface option {
param1 : string
param2? : number
param3? : {
param4 : string
param5 : boolean
}
.
param15? : string
}
希望这会有所帮助!!
答案 1 :(得分:1)
您可以利用打字稿的Partial。
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) {
}
}