クラス外部の非同期メソッドを呼び出す非同期メソッドを対象にした単体テスト

非同期メソッドの単体テストを書いていて、ちょっと考え込んだので、備忘録を兼ねて書いておきます。ネタ的には「リポジトリを利用するクラスに対する Moq を利用したメソッドの引数のテスト」に引き続いての moq を使った単体テストネタということで 😉

考え込んだのは、クラス外部の非同期メソッドを呼び出す非同期メソッドを対象にした単体テストをどう書くかということです。
具体的には「サービス層の public Async Task GetSampleAsync(int id) のテスト」で、この GetSampleAsync がデータアクセス層の public Async Task GetSampleAsync(int id) を内部で呼び出しているというようなものです。 続きを読む クラス外部の非同期メソッドを呼び出す非同期メソッドを対象にした単体テスト

Bootstrap 利用時のフォント指定

Visual Studio 2013 で Web アプリケーションを作成すると、Twitter Bootstrap を利用した View が生成されますが、デフォルトで設定されているフォントが日本語表示だとあまり綺麗に表示されないものになっています 🙁 。そこで、フォント指定をする方法を書いてみます。 続きを読む Bootstrap 利用時のフォント指定

Bootstrap.Datepicker.Globalize を利用した国際化

日付入力用の Javascript に Bootstrap Datepicker がありますが、Bootstrap.Datepicker.Globalize を利用すると jquery-globalize を用いた国際化対応ができます。今回、これを試してみるとともに、ブラウザの言語設定に基いて姓・名の表示順を変更させてみました。 続きを読む Bootstrap.Datepicker.Globalize を利用した国際化

Visual Studio 2013 での備忘録

Visual Studio 2013 では開発を行う際の素体の生成に NuGet を活用することで最適化を図れるようになったみたいですが、逆に言うとあることをしようとした時に NuGet からどのパッケージを持ってくるのかを把握しておかないと。。。ということになってますよね :mrgreen:

ということで、気がついたことなどを忘れた時のために( ..)φメモメモ (なので、この投稿は不定期に更新する予定。。。) 続きを読む Visual Studio 2013 での備忘録

Windows Azure Web サイトのローカル・ファイルシステムへのデータ保存

Windows Azure Web サイトのローカルストレージがデータの永続化に利用できるという話があって、この話を読むまでわたしもローカルストレージはデータの永続化には利用できないと思い込んでいました :mrgreen:

使えるということが分かったので、それじゃどういう風に使えるかな?という興味が湧いたので、ちょっと試してみました。

ファイルシステムを利用した I/O ということで、なんの工夫もせずにデータを一つのファイルにシリアル化すると、データ量が多くなるにつれて I/O がボトルネックになるよねぇ。。。ということで、KVS(キー・バリュー・ストア)的なアプローチをとってみます。 続きを読む Windows Azure Web サイトのローカル・ファイルシステムへのデータ保存

リポジトリを利用するクラスに対する Moq を利用したメソッドの引数のテスト

リポジトリを利用するクラスで、データ更新行うメソッド void Update(int Id, int quantity) (キーが Id のレコードの hoge 数値フィールドに quantity の値を加算する)について、hoge 数値フィールドに quantity の値が加算された数値で更新が行われることをテストする場合、リポジトリの更新メソッド呼び出しの引数をチェックすることが考えられます。ただし、本物のリポジトリを呼び出すと DB が更新されてしまうので、モック・ライブラリを利用しますよね。モック・ライブラリの一つである Moq を利用した場合、モックインスタンス.VerifyAll() メソッドでメソッドの呼び出しと引数の確認が行えますが、引数がクラスの場合、参照するインスタンスについての比較になってしまうので、何もしなければ引数のインスタンスと比較用のインスタンスは別物ということで、検証失敗になります。
これを回避するため、比較用のインスタンスを Equals メソッドをオーバーライドしたクラスから生成させ、比較するプロパティをリフレクションを用いることで、明示的に指定しないようにしてみました(モデルを変更した時のテストコードの比較部分の更新し忘れ対策 😛 )。
続きを読む リポジトリを利用するクラスに対する Moq を利用したメソッドの引数のテスト