gpt4 book ai didi

c# - 如何访问 MVC .net 核心中返回的 Controller 的字段结果

转载 作者:行者123 更新时间:2023-11-30 23:08:33 24 4
gpt4 key购买 nike

虽然我的 Controller 功能正常,但我在 .Name 的“Assert”行的单元测试中遇到语法错误

IAction result does not contain a definition for "Name"...

如果我在 Debug模式下将鼠标悬停在“结果”上,我可以看到数据在结果变量中(结果 > 模型 > 名称)。我试过使用 Result.Model.Name 访问它,但这也是一个语法错误。

单元测试:

    [Fact]
public async Task TestGetNameById()
{
string expectedName = "Component";

using (var context = GetContextWithData())
using (var controller = new AssetTypesController(context))
{
var result = await controller.Details(2);
Assert.Equal(expectedName, result.Name);
}
}

Controller Action :

   public async Task<IActionResult> Details(int? id)
{
if (id == null)
{
return NotFound();
}

var assetType = await _context.AssetType
.SingleOrDefaultAsync(m => m.AssetTypeId == id);
if (assetType == null)
{
return NotFound();
}

return View(assetType);
}

模型

public class AssetType
{
[DatabaseGenerated(databaseGeneratedOption: DatabaseGeneratedOption.Identity)]
[Key]
public int AssetTypeId { get; set; }
[Required]
public string Name { get; set; }
}

最佳答案

那是因为 IActionResult 不是 AssetType 的类型。

尝试这样的事情:

[Fact]
public async Task TestGetNameById()
{
string expectedName = "Component";

using (var context = GetContextWithData())
{
var controller = new AssetTypesController(context);
var result = await controller.Details(2) as ViewResult;
var assetType = (AssetType) result.ViewData.Model;
Assert.Equal(expectedName, assetType.Name);
}
}

关于c# - 如何访问 MVC .net 核心中返回的 Controller 的字段结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46470856/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com