我正在为一个函数编写测试。下面是文件-
// A.ts
export abstract class A{
protected abstract method();
}
//B.ts
export class B extends A{
constructor(){ super(); }
protected async method(){
init(request);
//some more method calls
}
private async init(request){
try {
const reqUrl = new URL('http://localhost' + request.url);
let param = reqUrl.searchParams.get("value") || "";
if (!param) {
throw "Value missing in request";
}
someFunc();
}
catch (e) {
console.log(e);
throw e;
}
}
}
//B.spec.ts
describe("tests", ()=> {
afterEach(() =>{
jest.resetAllMocks();
jest.clearAllMocks();
})
it("test on request", async()=>{
let bVal = new B();
let socket = new Socket();
let request = new IncomingMessage(socket);
await B["init"](request);
socket.destroy();
const spied = jest.spyOn(util,'someFunc').mockImplementation(()=>{});
expect(spied).toBeCalledTimes(0);
})
})
测试只是发送没有查询参数'value'的请求,因此函数init()将抛出错误。当我将函数调用B“init”封装在try catch块中的测试内时,测试通过,但如果没有try catch块,则测试失败。我不想在测试中使用try catch块,因此如何处理抛出的异常?
1条答案
按热度按时间eivnm1vs1#
如果您正在投掷:
那么你就像这样测试它:
如果你这样扔:
那么你就像这样测试它: