我想本地測(cè)試 lambda 函數(shù)調(diào)用,而不是使用 aws sns 服務(wù)。func Handler(request events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error){ ...do some logic and db opeations. err := db.Create(something) if err != nil { msg := "something error." target := "sns:arn" // do sns notification sess := session.Must(session.NewSession()) svc := sns.New(sess,&cfg) err = PublishNotification(svc, msg, target) }}func PublishNotification(svc *sns.SNS, message string, target string) error { params := sns.PublishInput{ Message: &message, Subject: &subject, TargetArn: &target,} req, _ := svc.PublishRequest(¶ms) err := req.Send() if err != nil { return err} return nil}func main(){ lambda.Start(Handler)}現(xiàn)在一切正常。我想對(duì)這個(gè) lambda 處理程序進(jìn)行單元測(cè)試或集成測(cè)試。func TestLabmdaWithSns(t *testing.T) { tests := []struct { request events.APIGatewayProxyRequest}{ request: events.APIGatewayProxyRequest{Body:"something"} } for _, test := range tests { response, err := Handler(test.request) // assert something}}而且我不想在測(cè)試時(shí)發(fā)送 sns 通知。我應(yīng)該如何模擬這個(gè) svc 或 PublishNotification 函數(shù)在本地測(cè)試時(shí)不向 sns 發(fā)布消息?
1 回答

小怪獸愛(ài)吃肉
TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個(gè)贊
您應(yīng)該在 PublishNotification 中使用接口 snsiface.SNSAPI 而不是 *sns.SNS。然后,您可以將 snsiface.SNSAPI 的模擬實(shí)現(xiàn)注入單元測(cè)試,如下所述:https ://docs.aws.amazon.com/sdk-for-go/api/service/sns/snsiface/
- 1 回答
- 0 關(guān)注
- 148 瀏覽
添加回答
舉報(bào)
0/150
提交
取消