我想測驗的代碼是
。
const FastestValidator = require(" fastest-validator")。
const { selector } = require("./selector") 。
/**。
* @param {object}。data - 請求主體物件
* @return {object} - 請求正文物件。- 應用模式后的驗證結果
*
**/
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>> "/span>,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>>"/span>, err)
return {
success: false,
errorMessage: err
}
}
};
module.exports = {
驗證器
};
我的測驗案例是...
const {validator} = require(' ;)
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: '你'。
}
console.log("selector" ,selector)
selector = jest.fn()。
selector.mockReturnValueOnce(data)。
selector.mockResolvedValue("randomPrivateKey"/span>)
console.log("FastestValidator"/span>,FastestValidator)
console.log("selector",selector)
console.log("FastestValidator",validator.FastestValidator)
console.log("selector",validator.selector)
await expect(validator(data)).resolves.toEqual(failed)。
});
在除錯日志中,我可以看到schema>>是未定義的,我想把它變成資料或隨機privateKey。 我想知道如何模擬用new關鍵字創建的物件,因為我正在使用new FastestValidator()來創建物件,我也需要模擬它的所有方法。
添加控制臺輸出 :
FAIL src/api/schema/validator/index.test.js
Console。
console.log
selector [Function: selector] {
_isMockFunction: true,
getMockImplementation: [Function(匿名)]。
mock: [Getter/Setter] 。
mockClear: [Function(匿名)]。
mockReset: [Function (anonymous)]。
mockRestore: [Function (anonymous)]。
mockReturnValueOnce。[Function(匿名)]。
mockResolvedValueOnce: [Function(匿名)]。
mockRejectedValueOnce: [Function (anonymous)]。
mockReturnValue。[Function(匿名)]。
mockResolvedValue。[Function(匿名)]。
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(匿名)]。
mock: [Getter/Setter] 。
mockClear: [Function(匿名)]。
mockReset: [Function (anonymous)]。
mockRestore: [Function (anonymous)]。
mockReturnValueOnce。[Function(匿名)]。
mockResolvedValueOnce: [Function(匿名)]。
mockRejectedValueOnce: [Function (anonymous)]。
mockReturnValue。[Function(匿名)]。
mockResolvedValue。[Function(匿名)]。
mockRejectedValue。[Function (anonymous)]。
mockImplementationOnce。[Function (anonymous)]。
mockImplementation。[Function (anonymous)]。
mockReturnThis。[Function (anonymous)]。
mockName: [Function (anonymous)]。
getMockName: [Function (anonymous)] 。
}
}
在Object.<anonymous>(src/api/schema/validator/index.test. js:23:11)
console.log。
FastestValidator [Function。Validator] {
_isMockFunction: true,
getMockImplementation: [Function(匿名)]。
mock: [Getter/Setter] 。
mockClear: [Function(匿名)]。
mockReset: [Function (anonymous)]。
mockRestore: [Function (anonymous)]。
mockReturnValueOnce。[Function(匿名)]。
mockResolvedValueOnce: [Function(匿名)]。
mockRejectedValueOnce: [Function (anonymous)]。
mockReturnValue。[Function(匿名)]。
mockResolvedValue。[Function(匿名)]。
mockRejectedValue。[Function (anonymous)]。
mockImplementationOnce。[Function (anonymous)]。
mockImplementation。[Function (anonymous)]。
mockReturnThis。[Function (anonymous)]。
mockName: [Function (anonymous)]。
getMockName: [Function (anonymous)] 。
}
在Object.<anonymous>(src/api/schema/validator/index.test. js:32:11)
console.log。
selector [Function: mockConstructor] {
_isMockFunction: true,
getMockImplementation: [Function(匿名)]。
mock: [Getter/Setter] 。
mockClear: [Function(匿名)]。
mockReset: [Function (anonymous)]。
mockRestore: [Function (anonymous)]。
mockReturnValueOnce。[Function(匿名)]。
mockResolvedValueOnce: [Function(匿名)]。
mockRejectedValueOnce: [Function (anonymous)]。
mockReturnValue。[Function(匿名)]。
mockResolvedValue。[Function(匿名)]。
mockRejectedValue。[Function (anonymous)]。
mockImplementationOnce。[Function (anonymous)]。
mockImplementation。[Function (anonymous)]。
mockReturnThis。[Function (anonymous)]。
mockName: [Function (anonymous)]。
getMockName: [Function (anonymous)] 。
}
在Object.<anonymous>(src/api/schema/validator/index.test. js:33:11)
console.log。
FastestValidator undefined.
在Object.<anonymous>(src/api/schema/validator/index.test. js:37:11)
console.log。
選擇器undefined。
在Object.<anonymous>(src/api/schema/validator/index.test. js:38:11)
console.log。
FastestValidator>> [Function。Validator] 。{
_isMockFunction: true,
getMockImplementation: [Function(匿名)]。
mock: [Getter/Setter] 。
mockClear: [Function(匿名)]。
mockReset: [Function (anonymous)]。
mockRestore: [Function (anonymous)]。
mockReturnValueOnce。[Function(匿名)]。
mockResolvedValueOnce: [Function(匿名)]。
mockRejectedValueOnce: [Function (anonymous)]。
mockReturnValue。[Function(匿名)]。
mockResolvedValue。[Function(匿名)]。
mockRejectedValue。[Function (anonymous)]。
mockImplementationOnce。[Function (anonymous)]。
mockImplementation。[Function (anonymous)]。
mockReturnThis。[Function (anonymous)]。
mockName: [Function (anonymous)]。
getMockName: [Function (anonymous)] 。
}
在validator(src/api/schema/validator/index.js:14:13)。
console.log。
selector>> [Function: selector] {
_isMockFunction: true,
getMockImplementation: [Function(匿名)]。
mock: [Getter/Setter] 。
mockClear: [Function(匿名)]。
mockReset: [Function (anonymous)]。
mockRestore: [Function (anonymous)]。
mockReturnValueOnce。[Function(匿名)]。
mockResolvedValueOnce: [Function(匿名)]。
mockRejectedValueOnce: [Function (anonymous)]。
mockReturnValue。[Function(匿名)]。
mockResolvedValue。[Function(匿名)]。
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(匿名)]。
mock: [Getter/Setter] 。
mockClear: [Function(匿名)]。
mockReset: [Function (anonymous)]。
mockRestore: [Function (anonymous)]。
mockReturnValueOnce。[Function(匿名)]。
mockResolvedValueOnce: [Function(匿名)]。
mockRejectedValueOnce: [Function (anonymous)]。
mockReturnValue。[Function(匿名)]。
mockResolvedValue。[Function(匿名)]。
mockRejectedValue。[Function (anonymous)]。
mockImplementationOnce。[Function (anonymous)]。
mockImplementation。[Function (anonymous)]。
mockReturnThis。[Function (anonymous)]。
mockName: [Function (anonymous)]。
getMockName: [Function (anonymous)] 。
}
}
在validator(src/api/schema/validator/index.js:15:13)。
console.log。
schema>> undefined。
在validator(src/api/schema/validator/index.js:18:13)。
console.log。
error>> TypeError: check is not a function。
在validator(/Users/h0j020h/amlng-realtime-api/src/api/schema/validator/index.js:27:35)。
at processTicksAndRejections (internal/process/task_queues.js:95:5)
在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)
uj5u.com熱心網友回復:
你需要這樣來模擬compile方法和selector:
const FastestValidator = require("fastest-validator") 。
const { validator } = require(' ./validator')
const { selector } = require("./selector") 。
jest.mock('./selector')。
jest.mock(' fastest-validator')。
const compile = jest.fn()。
FastestValidator.mockImplementation(() => ({
編譯
}))
it('testing schema validator', async() => {
let failed = {
success: false,
potentialIssue: {}.
};
let data = {
message: 'you ';
}
selector.mockResolvedValueOnce(data)。
// selector.mockResolvedValue("randomPrivateKey");
const check = jest.fn()。
compile.mockReturnValue(check)。
check.mockResolvedValue({})。
await expect(validator(data)).resolves.toEqual(失敗)。
});
原代碼中的主要問題是selector = jest.fn();,為什么?因為你在那一行說,現在selector是一個模擬的函式,沒有與".../selector"模塊的任何系結,所以當你呼叫validator(data)時,函式中的selector是原來的模擬模塊,在其中你沒有運行那些方法。 mockReturnValueOnce(data)或.mockResolvedValue("randomPrivateKey"),而是在jest.fn()指令中運行它們,這并沒有系結到被模擬的模塊。
關于 "模擬新",new FastestValidator()只是創建一個物件,里面有方法和屬性,所以在測驗代碼中:
FastestValidator.mockImplementation(() =>) ({
編譯
}))
FastestValidator回傳一個obj,其中有一個名為compile的方法,該方法是一個模擬的jest.fn()/code>
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/328071.html
標籤:
