インドカレーファンクラブ

パソコン、カメラ

【C#】【Dapper】DB接続の単体テストを考える(考えるだけ)

概要

DBコネクションつくってSELECT文だして結果を返して...みたいなところのテストを考える
テスト時にはInit時にfixtureみたいな感じで大量にデータつくって、Dispose時に全部消しておくみたいな...

PRD/STG環境のDBはAWSのAuroraとか、EC2上のMySQLとかそういうものを使っていると想定する(そのへんの作成経験が少なくふわふわ)
※ PRD: 本番, STG: ステージング

ついでに(ASP.NETの)ローカルでの開発時にはdockerコンテナでWebAP, MySQLのコンテナを立ててあれこれしているものとする

EntityFrameworkを使っている場合、DBはなんであれDB接続部分のテストはインメモリDBでうまいことできそう(?)な気がする
でも僕はEntityFrameworkを使ったことがないので...

でも、今回はPRD/STGのDBにMySQLを使うことを考える
そっちがMySQLならテスト用のDBもMySQLじゃないと苦しむことになると思う

ついでにテストはローカルでもやりたいし、AWSのCodePipeline(とか触ったことないけどCircleCI)でもやりたいしということも考慮に含める

で、考えたり調べたりした

  • STG DBの横にテスト用のDBを立てておいて、テスト時にはそこに接続
  • テスト実施時にDockerでMySQLを立ち上げて、テスト時にはそこに接続

STG DBの横にテスト用のDBを立てておいて、テスト時にはそこに接続

これが一番楽だと思うけどお金とかどうなのかな(若者の貧困)

ローカルのテストの時はローカルにdockerかなにかで立てたDBを使うでもよし
毎回PC起動時に立ち上げておくのちょっとだるいけど

テスト実施時にDockerでMySQLを立ち上げて、テスト時にはそこに接続

テストの都度コンテナを立ち上げるイメージ

読めばわかる

blog.dangl.me

やっていることはかっこいいんだけど、テストの都度コンテナ立ち上げるのに時間がかかりそうなのと、

テストはローカルでもやりたいし、AWSのCodePipeline(とか触ったことないけどCircleCI)でもやりたいしということも考慮に含める

ここの後半の話が大変そう

結論

出てないので、なにかいいのがあったら教えてね

こういう時になるとRailsは便利で偉いなと思う