コントローラー アクションの 1 つの単体テストを書くのに問題があります。詳細はこちら。
このビューは強く型付けされています:
Inherits="System.Web.Mvc.ViewPage<IEnumerable<Request>>"
テスト対象のコントローラーのメソッドは次のとおりです。
// GET: /Request/List
public ActionResult List()
{
return View("List",
requestRepository.GetAll(User.Id).OrderByDescending(x => x.Id));
}
問題を引き起こしているテスト(nUnit、MOQ)からの抜粋を次に示します。
//mockRequestRepository
// .Setup(repo => repo.GetAll(It.IsAny<int>()))
// .Returns(List<Request>());
//mockRequestRepository
// .Setup(repo => repo.GetAll(It.IsAny<int>()))
// .Returns(IList<Request>());
//mockRequestRepository
// .Setup(repo => repo.GetAll(It.IsAny<int>()))
// .Returns(IEnumerable<List<Request>>());
mockRequestRepository
.Setup(repo => repo.GetAll(It.IsAny<int>()))
.Returns(It.IsAny<List<Request>>());
最初の 3 つの setup ステートメントは、あいまいな呼び出しのためコンパイルされません。
Moq.Language.Flow.IReturnsResult<Core.Repositories.IRequestRepository>
Returns(System.Collections.Generic.IList<Core.Entities.Request>
(in interface IReturns<IRequestRepository, IList<Request>>)
Moq.Language.Flow.IReturnsResult<Core.Repositories.IRequestRepository>
Returns(System.Func<System.Collections.Generic.IList<Core.Entities.Request>>
(in interface IReturns<IRequestRepository, IList<Request>>)
4 番目はコンパイルされますが、コントローラー アクションの return ステートメントに到達すると、このエラーがスローされます。
InnerException {"Value cannot be null.\r\nParameter name: source"}
System.Exception {System.ArgumentNullException}
関係ないと思いますが、メソッドには GetAll() と GetAll(int UserId) の 2 つのオーバーロードがあります。List で OrderBy を実行する何かがあると確信していますが、Func の概念についてはかなり不安定です。ご協力いただきありがとうございます!