gpt4 book ai didi

c# - 测试方法 'X' 抛出异常 : System. InvalidOperationException : Mapper not initialized. 使用适当的配置调用初始化

转载 作者:太空狗 更新时间:2023-10-29 23:05:51 25 4
gpt4 key购买 nike

这是我正在为其开发单元测试的方法的代码:

public ActionResult ItemsListing()
{
var itemsList = itemsRepository.GetItems(true);

if (itemsList.Count() > 0)
{
var itemsListVMs = Mapper.Map<IEnumerable<Item>, IEnumerable<itemsListingViewModel>>(itemsList);
return View(itemsListVMs);
}
else
{
return RedirectToAction("Home");
}

}

以下是映射配置文件中的代码:

public static class MappingConfig
{
public static void RegisterMaps()
{
Mapper.Initialize(config =>
{
config.CreateMap<Item, itemsListingViewModel>();
});
}
}

并且我在 Global.asaxApplication_Start() 事件中初始化了映射器,如下所示:

MappingConfig.RegisterMaps();

下面是我尝试运行的简单测试方法:

[TestMethod]
public void ItemsListing()
{
HomeController controller = new HomeController();

ViewResult result = controller.ItemsListing() as ViewResult;

Assert.IsNotNull(result);
}

当我简单地运行应用程序时,它工作正常。但是当我尝试运行单元测试方法时,它会显示上述错误消息。谁能帮我解决这个问题?谢谢!

最佳答案

您需要为您的单元测试创​​建/注册映射,并且 Application_Start() 不会被执行。它与 IIS 相关联,IIS 在单元测试期间不运行。您必须手动调用映射配置。

[TestClass]
public class HomeControllerTests {
[ClassInitialize]
public static void Init(TestContext context) {
MappingConfig.RegisterMaps();
}

[TestMethod]
public void ItemsListing() {
HomeController controller = new HomeController();

ViewResult result = controller.ItemsListing() as ViewResult;

Assert.IsNotNull(result);
}
}

在上面的测试中,映射配置是在一个用 [ClassInitialize] 属性装饰的方法中完成的

ClassInitializeAttribute Class Identifies a method that contains code that must be used before any of the tests in the test class have run and to allocate resources to be used by the test class.

关于c# - 测试方法 'X' 抛出异常 : System. InvalidOperationException : Mapper not initialized. 使用适当的配置调用初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38999771/

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