これが私のシナリオです:
私は .NET MVC 4.0 プロジェクトとリポジトリ (ご想像のとおり) を使用して作業しており、Moq/xUnit テスト ライブラリを .NET ユニット テスト プロジェクトに実装しようとしています。
私はこれまでのところ持っています:
MVC コントローラー
private IHOLService _service;
public PolicyController(IHOLService service)
{
_service = service;
}
public ActionResult Index()
{
var policies = _service.GetAllPolicies(100, 0).ToList();
return View(policies);
}
ユニットテストクラス
[Fact]
public void GetPolicies()
{
// Arrange
var mockService = new Mock<IHOLService>();
List<Policy> policy = new List<Policy>()
mockService.Setup(cr => cr.GetAllPolicies(10, 0)).Returns(policy);
var controller = new PolicyController(mockService.Object);
// policy here contains 0 results.
// Act
var result = (ViewResult)controller.Index();
var model = result.ViewData.Model; // equals 0.
// Assert
var listCategories = Assert.IsAssignableFrom<List<Policy>>(result.ViewData.Model);
// listCategories.Count equals 0 results.
Assert.Equal(10, listCategories.Count); // Thus always fails
}
私の問題は、コントローラーが直接呼び出されると、すべてが正常に機能し、100 個のポリシーが読み込まれることです。
ただし、テストを実行すると、0 個の製品が読み込まれます。これは、サービスの初期化に関係する可能性のある、どこかでモック呼び出しに問題があると推測しています。これまでにこれを経験したことがあり、アドバイスを提供できる人はいますか?
また、データ層に保持されているリポジトリではなく、サービスをテストするのは正しいですか?
前もって感謝します。