Vin*_*t J 5 unit-testing typescript
假设我想对打字稿中的函数进行单元测试。此函数使用具有复杂形状的“选项”类型(对象)参数。
interface option {
param1 : string
param2 : number
param3 : {
param4 : string
param5 : boolean
}
.
.
.
param15 : string
}
const functionToTest = (opt:option)=>{
...do stuff with option
}
Run Code Online (Sandbox Code Playgroud)
现在假设我想编写一个单元测试,在 param1 更改时模拟 functionToTest 的正确行为,忽略对结果没有影响的其他参数。
我的理解是为了让我的测试更有弹性,我可以用普通的 JS 编写
const option1 = {
param1 : "foo"
}
Run Code Online (Sandbox Code Playgroud)
并做我的测试
expect(functionToTest(option1)).to.be.true;
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用 typescript 编写测试,我将不得不使用所有接口(虚拟)成员编写一个完整的 option1 对象,尽管大多数将被忽略,并且会使读者偏离测试的真正目标。
是否有解决方法或我应该改变我的想法?
为此,您可以利用 typescript 的Partial。
interface YourInterface {
prop: string;
foo: number;
}
const data: Partial<YourInterface> = {
prop: 'value'
};
// service is an instance of SomeService
service.sendData(<YourInterface> data);
Run Code Online (Sandbox Code Playgroud)
class SomeService {
sendData(data: YourInterface) {
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
874 次 |
| 最近记录: |