Я настраиваю лямбда-функцию (node.js) и, например, ради этого мы будем сохранять ее минимальной.
module.exports = (event, context, callback) {
console.log("hello world")
}
Однако я создал функцию для переноса лямбда-функцииэто позволяет мне выполнять некоторые функции, которые требуются перед выполнением каждой лямбды (у меня есть коллекция лямбда-функций, которые подключены с использованием их модели серверного приложения (SAM) ).Это также позволяет мне объединить некоторые записи и обработку ошибок для каждой функции.
// hook.js
const connect = fn => (event, context, callback) => {
someFunction()
.then(() => fn(event, context, callback))
.then(res => callback(null, res))
.catch(error => {
// logging
callback(error)
})
}
module.exports = { connect }
// index.js
const Hook = require("./hook")
exports.handler = Hook.connect((event, context, callback) => {
console.log("hello world")
})
Логика работает хорошо, и Lambda успешно ее обрабатывает.Тем не менее, я пытаюсь заглушить эту Hook.connect
функцию, используя SinonJS и нуждаюсь в некотором руководстве.
Я просто хочу заглушить ее, чтобы вернуть выполненное обещание, таким образом, мы можемприступим к обработке кода внутри каждой лямбда-функции (fn(event, context, callback)
).
const sinon = require("sinon")
const Hook = require("./hook")
const { handler } = require("./index")
const event = {} // for simplicity sake
const context = {} // for simplicity sake
const callback = {} // for simplicity sake
describe("Hello", () => {
let connectStub
beforeEach(() => {
connectStub = sinon.stub(Hook, "connect").callsFake()
afterEach(() => {
connectStub.restore()
})
it("works", () => {
const results = handler(event, context, callback)
// assert
})
})
Я пробовал несколько разных методов, от базового, sinon.stub(Hook, "connect")
, до более сложного, где я пытаюсьчтобы заглушить частные функции внутри hook.js
файла, используя rewire .
Буду признателен за любую помощь - заранее спасибо.