Moq

2017-08-08 14 views
1

の要求からのファイル数Formのが動作しますが、Countは機能しません。 Countに解決する方法は、期待値を返しますか?Moq

var httpContextMock = new Mock<HttpContextBase>(); 
var request = new Mock<HttpRequestBase>(); 

httpContextMock.SetupGet(x => x.Request).Returns(request.Object);    
httpContextMock.SetupGet(x => x.Request.Form).Returns(form); 
httpContextMock.SetupGet(x => x.Request.Files.Count).Returns(2); 
+0

誤ったモックを設定しているために動作しません – Nkosi

答えて

1

間違ったモックを設定しているため動作しません。リクエストモックで設定を適用します。

var httpContextMock = new Mock<HttpContextBase>(); 

var requestMock = new Mock<HttpRequestBase>(); 
requestMock.Setup(_ => _.Form).Returns(form); 
requestMock.Setup(_ => _.Files.Count).Returns(2); 

httpContextMock.Setup(_ => _.Request).Returns(requestMock.Object); 

ただ、上記の作品を証明するために、私はこの

var context = httpContextMock.Object; 

Assert.AreEqual(2, context.Request.Files.Count); 

のようにそれをテストし、それが働きました。

0

私は簡単なテストを行い、モックコンテキストでリクエストにアクセスすると機能します。

[Test()] 
    public void Test() 
    { 
     var httpContextMock = new Mock<HttpContextBase>(); 
     var request = new Mock<HttpRequestBase>(); 

     httpContextMock.SetupGet(x => x.Request).Returns(request.Object); 
     httpContextMock.SetupGet(x => x.Request.Files.Count).Returns(2); 

     var count = httpContextMock.Object.Request.Files.Count; 
     Assert.AreEqual(2, count); 
    } 

しかし、Nkosiが示唆しているように、おそらく、あなたはおそらくrequestMock自体にFiles.Countを設定したかったでしょう。