我正在尝试创建一个单元测试,可以在其中验证选择查询。 我创建了一个伪数据库,并将电子邮件和用户名添加到其中。 我无法访问ViewResult的Email属性
尝试在ViewResult上使用索引时出现错误
不能将[]的索引应用于类型为'object'的表达式
获取该信息的操作是正确的,我可以使用Visual Studio 2015上的调试器对此进行验证。我收到一个ActionResult,然后我知道我必须将其强制转换为ViewResult。
在调试器中看到的
returnedResult->模型-> [0]->电子邮件
var fakeDb = new FakeApplicationDbContext();
fakeDb.FoundInformation = new FakeDbSet<FoundInformation>();
var foundInformation = new FoundInformation { Email = "Test@Email.com", Username = "User1" };
var foundInformation2 = new FoundInformation { Email = "Test2@Email.com", Username = "User2" };
fakeDb.FoundInformation.Add(foundInformation);
fakeDb.FoundInformation.Add(foundInformation2);
FoundInformationController foundInformationController = new FoundInformationController(fakeDb);
var returnedResult = (ViewResult)foundInformationController.Details(new
Search { SearchTerm = "User2" });
var foundInfoEmail = returnedResult.Model[0].Email;
我遇到的错误在行中
var foundInfoEmail = returnedResult.Model[0].Email;
我将如何抓住该电子邮件以确认它是正确的?
答案 0 :(得分:0)
您是否尝试过returnResult.Model.ToList()[0]。电子邮件?
答案 1 :(得分:0)
您需要将Model
强制转换为所需的类型并访问该电子邮件属性。
例如,如果您在“详细信息”视图中返回列表或对象数组。
您可以像
一样访问该属性。var returnedResult = (ViewResult)foundInformationController.Details(new
Search { SearchTerm = "User2" });
// if you return List then use like below and if you return an array then cast into array rather then list.
var model = returnResult.Model as List<Type of object Your return in Result> ;
var foundInfoEmail = model[0].Email;