У нас есть интерфейс из nodemodules
declare namespace CbServer {
interface Resp {
error(msg: any): never;
success(msg: any): never;
}
}
In dh. js
const getDataFromRequest = (req, resp) => {
if (req) {
var data = {
dName: req.params.body.d_id,
requestData: req.params.body,
dColName: `SD-${req.params.body.d_id}`
}
return data;
}
return resp.error('failed');
}
module.exports = getDataFromRequest;
Написание тестового примера для вышеуказанного метода с использованием Jest
In dh.test.ts
const getDataFromRequest = require("./dh");
import { MockProxy, mock } from 'jest-mock-extended';
describe('test cases', () => {
var inputReq = {
params: {
body: {
"d_id": "733439150857912479",
"last_access": "today",
"user": "TestUser"
}
}
}
var getDataResult = {
dName: "drw_733439150857912479",
requestData: { "d_id": "733439150857912479", "last_access": "today", "user": "TestUser" },
dColName: "SD-733439150857912479"
}
let mockResp: MockProxy<CbServer.Resp>;
beforeEach(() => {
mockResp = mock<CbServer.Resp>();
});
test('request with valid parameter', () => {
var resultData = getDataFromRequest(inputReq, mockResp);
expect(resultData).toEqual(getDataResult);
expect(mockResp.error).toBeCalledTimes(0);
});
test('density hook request with invalid parameter', () => {
var resultData = getDataFromRequest(null, mockResp);
//Argument of type '"error"' is not assignable to parameter of type 'never'.
//mockResp.error.mockReturnValue("error");
mockResp.error.mockImplementation()
expect(resultData).toBeFalsy();
expect(mockResp.error).toHaveBeenCalled();
//expect(mockResp.error).toEqual("error");
});
})
Как мы можем проверить строку сообщения об ошибке? т.е. в dh. js мы возвращаем resp.error ("error") Я хотел бы проверить возврат сообщения для этой функции. Есть ли способ проверить сообщение? Я попытался имитировать возвращаемое значение, но у него никогда не было типа, что я не мог установить значение.