在main.go
中,我有一些代码可以通过网络调用AWS Secrets Manager。
func main() {
secretName := os.Getenv("DYNAMO_SECRET")
credentials, err := getSecret(secretName)
if err != nil {
logger.Errorf("Failed to retrieve secret from AWS Secrets manager %+v\n", err)
panic(err)
}
router, err := setupRouter(credentials)
getSecret(secretName)
函数在内部对AWS Secrets Manager进行了网络调用。在main
的单元测试中,我有以下代码。
func TestMainProgram(t *testing.T) {
defer mockStartServer(nil)()
defer mockSetupRouter(mux.NewRouter(), nil)()
main()
t.Log("Everything is perfect.")
}
运行单元测试时,我想模拟对AWS Secrets Manager的网络调用。是否可以模拟getSecret(secretName)
的返回值?在Java环境中,我正在尝试使用Mockito
和when(functionIsCalled).thenReturn(mockValue)
语法做类似的事情。
答案 0 :(得分:1)
您可以使用函数变量将其设置为其他值进行测试:
information_schema
在测试中,您可以更改func defaultGetSecret(secretName string) (Credentials, error) {...}
var getSecret=defaultGetSecret
func main() {
...
credentials, err:=getSecret(...)
}
指向其他内容:
getSecret