У меня есть S3-триггерная AWS Lambda, написанная на Go.Я смог успешно протестировать весь вспомогательный код, однако я застрял, пытаясь протестировать лямбда-обработчик.
Вот подпись моего обработчика:
func HandleRequest(ctx context.Context, s3Event events.S3Event)
Воттестовый код:
package main
import (
"context"
"encoding/json"
"testing"
"github.com/aws/aws-lambda-go/events"
"github.com/stretchr/testify/assert"
)
func TestHandleRequest(t *testing.T) {
// 1. read JSON from file
inputJSON, err := readJSONFromFile("./testdata/s3-event.json")
if err != nil {
t.Errorf("could not open test file. details: %v", err)
}
// 2. de-serialize into Go object
var inputEvent events.S3Event
if err := json.Unmarshal(inputJSON, &inputEvent); err != nil {
t.Errorf("could not unmarshal event. details: %v", err)
}
// 3. How can I mock the context.Context?
assert.NoError(t, HandleRequest(context.Context, inputEvent))
}
Понятия не имею, как мне издеваться над контекстом. Текст.Я не смог найти ни одного примера в Интернете.
Кто-нибудь знает?Мой код выглядит идиоматичным для тестирования S3-запущенного Go Lambda?