【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かなにかで立てたDBを使うでもよし
毎回PC起動時に立ち上げておくのちょっとだるいけど
テスト実施時にDockerでMySQLを立ち上げて、テスト時にはそこに接続
テストの都度コンテナを立ち上げるイメージ
読めばわかる
やっていることはかっこいいんだけど、テストの都度コンテナ立ち上げるのに時間がかかりそうなのと、
テストはローカルでもやりたいし、AWSのCodePipeline(とか触ったことないけどCircleCI)でもやりたいしということも考慮に含める
ここの後半の話が大変そう
結論
出てないので、なにかいいのがあったら教えてね
こういう時になるとRailsは便利で偉いなと思う