【发布时间】:2021-09-18 07:07:47
【问题描述】:
我要测试的代码是
'use strict';
const FastestValidator = require("fastest-validator");
const { selector } = require("../selector");
/**
* @param {object} data - Request Body object
* @return {object} - Valiated results after applying the Schema
*
**/
const validator = async (data) => {
try {
console.log("FastestValidator>> ",FastestValidator)
console.log("selector>> ",selector)
const v = new FastestValidator();
let schema = await selector(data);
console.log("schema>> ",schema)
console.log("v>> ",v)
let check = v.compile(schema);
let inBoundMappedSchema = {};
let validatingInboundData = {};
for (let index in schema) {
inBoundMappedSchema[index] = data[index];
}
validatingInboundData = await check(inBoundMappedSchema);
if (typeof validatingInboundData === 'object') {
return {
success: false,
potentialIssue: validatingInboundData
}
} else if (validatingInboundData && typeof boolean) {
return {
success: true,
}
}
} catch (err) {
console.log("error>>", err)
return {
success: false,
errorMessage: err
}
}
};
module.exports = {
validator
};
我的测试用例是..
const {validator} = require('./index');
let FastestValidator = require("fastest-validator");
let { selector } = require("../selector");
jest.mock('../selector');
jest.mock('fastest-validator');
test('testing schema validator', async () => {
let failed = {
success: false,
}
let data = {
message: 'you '
}
console.log("selector",selector)
selector = jest.fn();
selector.mockReturnValueOnce(data);
selector.mockResolvedValue("randomPrivateKey")
console.log("FastestValidator",FastestValidator)
console.log("selector",selector)
console.log("FastestValidator",validator.FastestValidator)
console.log("selector",validator.selector)
await expect(validator(data)).resolves.toEqual(failed);
});
在调试日志中,我可以看到 schema>> 是 undefined ,我希望它是 data 或 randomprivateKey 。 如果我知道如何模拟使用 new 关键字创建的对象,我会非常有帮助,因为我正在使用 new FastestValidator() 创建对象,并且我还需要模拟它的所有方法。
添加控制台输出:
FAIL src/api/schema/validator/index.test.js
● Console
console.log
selector [Function: selector] {
_isMockFunction: true,
getMockImplementation: [Function (anonymous)],
mock: [Getter/Setter],
mockClear: [Function (anonymous)],
mockReset: [Function (anonymous)],
mockRestore: [Function (anonymous)],
mockReturnValueOnce: [Function (anonymous)],
mockResolvedValueOnce: [Function (anonymous)],
mockRejectedValueOnce: [Function (anonymous)],
mockReturnValue: [Function (anonymous)],
mockResolvedValue: [Function (anonymous)],
mockRejectedValue: [Function (anonymous)],
mockImplementationOnce: [Function (anonymous)],
mockImplementation: [Function (anonymous)],
mockReturnThis: [Function (anonymous)],
mockName: [Function (anonymous)],
getMockName: [Function (anonymous)],
constructor: [Function: AsyncFunction] {
_isMockFunction: true,
getMockImplementation: [Function (anonymous)],
mock: [Getter/Setter],
mockClear: [Function (anonymous)],
mockReset: [Function (anonymous)],
mockRestore: [Function (anonymous)],
mockReturnValueOnce: [Function (anonymous)],
mockResolvedValueOnce: [Function (anonymous)],
mockRejectedValueOnce: [Function (anonymous)],
mockReturnValue: [Function (anonymous)],
mockResolvedValue: [Function (anonymous)],
mockRejectedValue: [Function (anonymous)],
mockImplementationOnce: [Function (anonymous)],
mockImplementation: [Function (anonymous)],
mockReturnThis: [Function (anonymous)],
mockName: [Function (anonymous)],
getMockName: [Function (anonymous)]
}
}
at Object.<anonymous> (src/api/schema/validator/index.test.js:23:11)
console.log
FastestValidator [Function: Validator] {
_isMockFunction: true,
getMockImplementation: [Function (anonymous)],
mock: [Getter/Setter],
mockClear: [Function (anonymous)],
mockReset: [Function (anonymous)],
mockRestore: [Function (anonymous)],
mockReturnValueOnce: [Function (anonymous)],
mockResolvedValueOnce: [Function (anonymous)],
mockRejectedValueOnce: [Function (anonymous)],
mockReturnValue: [Function (anonymous)],
mockResolvedValue: [Function (anonymous)],
mockRejectedValue: [Function (anonymous)],
mockImplementationOnce: [Function (anonymous)],
mockImplementation: [Function (anonymous)],
mockReturnThis: [Function (anonymous)],
mockName: [Function (anonymous)],
getMockName: [Function (anonymous)]
}
at Object.<anonymous> (src/api/schema/validator/index.test.js:32:11)
console.log
selector [Function: mockConstructor] {
_isMockFunction: true,
getMockImplementation: [Function (anonymous)],
mock: [Getter/Setter],
mockClear: [Function (anonymous)],
mockReset: [Function (anonymous)],
mockRestore: [Function (anonymous)],
mockReturnValueOnce: [Function (anonymous)],
mockResolvedValueOnce: [Function (anonymous)],
mockRejectedValueOnce: [Function (anonymous)],
mockReturnValue: [Function (anonymous)],
mockResolvedValue: [Function (anonymous)],
mockRejectedValue: [Function (anonymous)],
mockImplementationOnce: [Function (anonymous)],
mockImplementation: [Function (anonymous)],
mockReturnThis: [Function (anonymous)],
mockName: [Function (anonymous)],
getMockName: [Function (anonymous)]
}
at Object.<anonymous> (src/api/schema/validator/index.test.js:33:11)
console.log
FastestValidator undefined
at Object.<anonymous> (src/api/schema/validator/index.test.js:37:11)
console.log
selector undefined
at Object.<anonymous> (src/api/schema/validator/index.test.js:38:11)
console.log
FastestValidator>> [Function: Validator] {
_isMockFunction: true,
getMockImplementation: [Function (anonymous)],
mock: [Getter/Setter],
mockClear: [Function (anonymous)],
mockReset: [Function (anonymous)],
mockRestore: [Function (anonymous)],
mockReturnValueOnce: [Function (anonymous)],
mockResolvedValueOnce: [Function (anonymous)],
mockRejectedValueOnce: [Function (anonymous)],
mockReturnValue: [Function (anonymous)],
mockResolvedValue: [Function (anonymous)],
mockRejectedValue: [Function (anonymous)],
mockImplementationOnce: [Function (anonymous)],
mockImplementation: [Function (anonymous)],
mockReturnThis: [Function (anonymous)],
mockName: [Function (anonymous)],
getMockName: [Function (anonymous)]
}
at validator (src/api/schema/validator/index.js:14:13)
console.log
selector>> [Function: selector] {
_isMockFunction: true,
getMockImplementation: [Function (anonymous)],
mock: [Getter/Setter],
mockClear: [Function (anonymous)],
mockReset: [Function (anonymous)],
mockRestore: [Function (anonymous)],
mockReturnValueOnce: [Function (anonymous)],
mockResolvedValueOnce: [Function (anonymous)],
mockRejectedValueOnce: [Function (anonymous)],
mockReturnValue: [Function (anonymous)],
mockResolvedValue: [Function (anonymous)],
mockRejectedValue: [Function (anonymous)],
mockImplementationOnce: [Function (anonymous)],
mockImplementation: [Function (anonymous)],
mockReturnThis: [Function (anonymous)],
mockName: [Function (anonymous)],
getMockName: [Function (anonymous)],
constructor: [Function: AsyncFunction] {
_isMockFunction: true,
getMockImplementation: [Function (anonymous)],
mock: [Getter/Setter],
mockClear: [Function (anonymous)],
mockReset: [Function (anonymous)],
mockRestore: [Function (anonymous)],
mockReturnValueOnce: [Function (anonymous)],
mockResolvedValueOnce: [Function (anonymous)],
mockRejectedValueOnce: [Function (anonymous)],
mockReturnValue: [Function (anonymous)],
mockResolvedValue: [Function (anonymous)],
mockRejectedValue: [Function (anonymous)],
mockImplementationOnce: [Function (anonymous)],
mockImplementation: [Function (anonymous)],
mockReturnThis: [Function (anonymous)],
mockName: [Function (anonymous)],
getMockName: [Function (anonymous)]
}
}
at validator (src/api/schema/validator/index.js:15:13)
console.log
schema>> undefined
at validator (src/api/schema/validator/index.js:18:13)
console.log
error>> TypeError: check is not a function
at validator (/Users/h0j020h/amlng-realtime-api/src/api/schema/validator/index.js:27:35)
at processTicksAndRejections (internal/process/task_queues.js:95:5)
at Object.<anonymous> (/Users/h0j020h/amlng-realtime-api/src/api/schema/validator/index.test.js:46:5)
at validator (src/api/schema/validator/index.js:39:13)
【问题讨论】:
-
能否包含console.log 语句的输出?
标签: javascript unit-testing jestjs ts-jest