TDD、ASP.NET MVC、LinqToSqlの新機能です。 LinqToSqlを使用してストアドプロシージャからデータを取得するリポジトリのテストを作成しようとしています。Moqを使用したユニットテストLinqを使用したストアドプロシージャへのコード
これは、試験されているリポジトリの方法である:
public int GetResponseCount(int campaignId)
{
var results = (new MyDBDataContext()).GetResponseCountById(campaignId);
foreach (GetResponseCountByIdResult result in results)
{
return (result.ResponseCount != null) ? result.ResponseCount.Value : 0;
}
return 0;
}
これはテストのコードである:
var myDBDataContext = new Mock<MyDBDataContext>();
var result = new Mock<ISingleResult<GetResponseCountByIdResult>>().Object();
myDBDataContext.Setup(x => x.GetResponseCountById(It.IsAny<int>())).Returns(result).Verifiable();
...
...
2つの質問がある:
1)sored手順は、単一のを返します整数結果。しかし、LinqToSqlの応答をループして値を取得する必要があります。それは理想的ではない。それを行うより良い方法はありますか?
2)テスト中のコードはコンパイルされません。コンパイラが言う - 非呼び出し可能なメンバ'Moq.Mock<System.Data.Linq.ISingleResult<GetResponseCountByResult>>.Object' cannot be used like a method.
私のリポジトリメソッドがLinqToSqlの正しいメソッドを呼び出すことを確認するためにテストを書く方法はありますか?
多くのありがとうございます!