我有一个视图模型类如下:
public class MyViewModel
{
// Other properties......
public IEnumerable<SelectListItem> SecurityQuestions { get; set; }
}
在我的控制器中,我有以下代码:
public ViewResult Index()
{
var viewModel = new MyViewModel {SecurityQuestions = GetSecurityQuestions()};
return View(viewModel);
}
public IEnumerable<SelectListItem> GetSecurityQuestions()
{
return new SelectList(_securityQuestionService.GetAll(),
"SecurityQuestionID",
"Question");
}
我已经编写了一个单元测试来测试Index操作方法:
[Test]
public void Can_Load_View_With_Security_Questions()
{
var result = _controller.Index();
var questions = _controller.GetSecurityQuestions();
var viewModel = result.ViewData.Model as MyViewModel;
CollectionAssert.AreEqual(questions, viewModel.SecurityQuestions);
}
我期待这个测试没有任何问题。但我收到以下错误:
Expected: <System.Web.Mvc.SelectList>
But was: <System.Web.Mvc.SelectList>
为什么会这样?
答案 0 :(得分:0)
我期待这个测试没有任何问题
为什么你会期待这样的事情?问题可能来自于您两次调用_securityQuestionService.GetAll()
方法的事实。第一次在控制器动作内部,第二次在你的单元测试中,这可能是不同的实例。此外,SelectList
类型不会覆盖Equals方法,因此您遇到的是正常行为。