Siv*_*nan 3 c# unit-testing mstest moq asp.net-core
public ActionResult View(string name)
{
if (TempData["SessionVariable"] != null)
{
FileName = name;
return View();
}
else
{
return RedirectToAction("index", "Home");
}
}
Run Code Online (Sandbox Code Playgroud)
测试方法
public void UseCaseView_CorrectRequirements()
{
var mock = new Mock<Controller>();
mock.Setup(p => p.TempData["SessionVariable"]).Returns("admin");
Controller.View("SAMPLE.xml");
}
Run Code Online (Sandbox Code Playgroud)
会引发错误,例如
结果StackTrace:
在Moq.Mock.SetupGetPexProtected [T,TProperty] [T,TProperty](
1 mock, ExpressionC中的模拟1表达式,条件条件)下的C:\ projects \ moq4 \ Source \ Mock.cs:line 883处的Moq.Mock.ThrowIfSetupExpressionInvolvesUnsupportedMember(表达式设置,MethodInfo方法):位于Moq.Mock.SetupGet [T,TProperty](模拟1 mock, Expression1表达式,条件条件)处的Moq.Mock.SetupGet [T,TProperty](模拟1表达式,条件条件)处的第537行:\ projects \ moq4 \ Source \ Mock.cs:line 517处Moq.Mock.Setup [T,TResult]1 mock, Expression中的C:\ projects \ moq4 \ Source \ Mock.cs:line 507中的Moq.Mock.SetupPexProtected [T,TResult](模拟1 mock, Expression1表达式,条件条件)(模拟1表达式,条件条件)位于Moq.QueryableMockExtensions.FluentMock [T,TResult](模拟)的C:\ projects \ moq4 \ Source \ Mock.cs:line 4841 mock, Expression1个设置)在C:\ projects \ moq4 \ Source \ Mock.cs:行224在Lambda_method(Closure)在Moq.Mock.GetTargetMock(Expression fluentExpression,Mock模拟)在C:\ projects \ moq4 \ Source \ Mock .cs:位于Moq.Mock.SetupPexProtected [T,TResult](模拟1 mock, Expression1表达式,条件条件)的行856,位于C:\ projects \ moq4 \ Source \ Mock.cs:位于Moq.Mock.Setup [T,TResult的行505] ](模拟1 mock, Expression1表达式,条件条件)在SE_WEBAPP.Tests.TestControllers.UsecaseControllerTests.UseCaseView_CorrectRequirements()中的C:\ projects \ moq4 \ Source \ Mock.cs:line 484中D:\ Public \ SE_WEBAPP_TESTCASE \ SE_WEBAPP \ SE_WEBAPP.Tests \ TestControllers \ UsecaseControllerTests.cs:第23行
结果消息:测试方法SE_WEBAPP.Tests.TestControllers.UsecaseControllerTests.UseCaseView_CorrectRequirements引发异常:System.NotSupportedException:在非虚拟(在VB中可重写)成员上的无效设置:嘲笑=>模拟.TempData
在asp.net-core中,它Controller.TempData是一个公共属性,因此您可以轻松地访问它并设置所需的键/值
public void UseCaseView_CorrectRequirements() {
// Arrange
var httpContext = new DefaultHttpContext();
var tempData = new TempDataDictionary(httpContext, Mock.Of<ITempDataProvider>());
tempData["SessionVariable"] = "admin";
var controller = new UsecaseController() {
TempData = tempData
};
var expected = "SAMPLE.xml";
//Act
var view = controller.View(expected) as ViewResult;
var actual = controller.FileName;
//Assert
Assert.AreEqual(expected, actual);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1242 次 |
| 最近记录: |