使用部分形状进行单元格测试,使用打字稿

时间:2016-05-20 20:56:06

标签: unit-testing typescript

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

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对象,尽管大多数会被忽略,它会使读者偏离真正的目标。测试

是否有关于此问题的解决方法或我应该改变的事情?

2 个答案:

答案 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) {

  }
}

相关问题