前提・実現したいこと
Golangでテストコードを書いています。
現在、service層のテストコードを書いているのですが、dao層から呼び出すメソッドをモックにしたいです。
別パッケージから呼び出すメソッドをモックとして定数を与える方法を教えていただきたいです。
該当のソースコード
フォルダ構成
article ├ client ├ api │ ├ main.go │ ├ contoroller │ │ └ contoroller.go │ ├ service │ │ └ service.go │ ├ dao │ │ └ dao.go │ ├ go.mod │ ├ go.sum │ └ Dockerfile ├ nginx └ docker-compose.yml
service.go
go
1func GetArticleService(db *sql.DB) []util.Article { 2 var articles []util.Article 3 4 //ここのdao.GetArticleDao(db)をモックにしたいです 5 results := dao.GetArticleDao(db) 6 7 article := util.Article{} 8 for results.Next() { 9 err := results.Scan(&article.ID, &article.UUID, &article.TITLE, &article.CONTENT) 10 if err != nil { 11 panic(err.Error()) 12 } else { 13 articles = append(articles, article) 14 } 15 } 16 return articles 17}
service_test.go
go
1func TestGetArticleService(t *testing.T) { 2 //dbのモック 3 db, _, err := sqlmock.New() 4 5 if err != nil { 6 t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) 7 } 8 9 defer db.Close() 10 11 //期待値の作成 12 var expectedArticles []util.Article 13 14 expectedArticle1 := util.Article{ 15 ID: 1, 16 UUID: "bea1b24d-0627-4ea0-aa2b-8af4c6c2a41c", 17 TITLE: "test", 18 CONTENT: "test", 19 } 20 expectedArticles = append(expectedArticles, expectedArticle1) 21 22 expectedArticle2 := util.Article{ 23 ID: 2, 24 UUID: "844bc620-7336-41a3-9cb4-552a0024ff1c", 25 TITLE: "test2", 26 CONTENT: "test2", 27 } 28 expectedArticles = append(expectedArticles, expectedArticle2) 29 30 //期待値とGetArticleServiceが一致するかチェック 31 //GetArticleService(db)を実行するので、dao.GetArticleDao(db)をモックにしたい 32 assert.Equal(t, expectedArticles, GetArticleService(db)) 33}
補足情報(FW/ツールのバージョンなど)
・client: react/axios ・api: golang/gin ・web-server: nginx ・db: mysql ・container: docker ・ci-tool: travis ・deploy: aws elastic beanstalk
以上お手数ですが、ご教授いただけると幸いです。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。