C# 使用Moq对请求中的文件进行计数
C# 使用Moq对请求中的文件进行计数,c#,asp.net-mvc,unit-testing,moq,C#,Asp.net Mvc,Unit Testing,Moq,表单的SetupGet有效,但计数无效。如何解决Count返回预期值的问题 var httpContextMock = new Mock<HttpContextBase>(); var request = new Mock<HttpRequestBase>(); httpContextMock.SetupGet(x => x.Request).Returns(request.Object); httpContextMock.SetupGet
表单的SetupGet
有效,但计数无效。如何解决Count
返回预期值的问题
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);
var httpContextMock=new Mock();
var request=newmock();
httpContextMock.SetupGet(x=>x.Request).Returns(Request.Object);
httpContextMock.SetupGet(x=>x.Request.Form).Returns(Form);
httpContextMock.SetupGet(x=>x.Request.Files.Count);
它不起作用,因为您设置了错误的模拟。在请求模拟上应用设置
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);
它成功了。我做了一个快速测试,如果您通过模拟上下文访问请求,它就会成功
[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);
}
[Test()]
公开无效测试()
{
var httpContextMock=new Mock();
var request=newmock();
httpContextMock.SetupGet(x=>x.Request).Returns(Request.Object);
httpContextMock.SetupGet(x=>x.Request.Files.Count);
var count=httpContextMock.Object.Request.Files.count;
断言。等于(2,计数);
}
但是,正如Nkosi所建议的,您可能想要设置文件。请依靠requestMock本身。它不起作用,因为您设置了错误的mock
[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);
}