gpt4 book ai didi

nunit - 将 Moq 与 Windsor 一起使用 - Moq.Mock[IFoo] 类型的对象无法转换为 IFoo

转载 作者:行者123 更新时间:2023-12-04 03:34:51 30 4
gpt4 key购买 nike

我正在尝试设置一些 Moq 存储库来测试我的服务,将温莎城堡作为我的 IOC。 Mu 服务依赖于 IFoo,因此我正在创建一个实现 IFoo 的 moq 实例并将其注入(inject)容器中,如下所示:

_container.AddComponent("AutoBill", 
typeof (AutoBillService), typeof (AutoBillService));

var mockUserRepository = new Mock<IUserRepository>();
var testUser = new User()
{
FirstName = "TestFirst",
LastName = "TestLast",
UID=1
};
mockUserRepository.Setup(repo => repo.GetUser(testUser.UID))
.Returns(testUser);

_container.Kernel.AddComponentInstance("UserRepository",
typeof(IUserRepository), mockUserRepository);

var service = _container.Resolve<AutoBillService>(); //FAIL

这样做给了我一个异常(exception):
System.ArgumentException:“Moq.Mock`1[IUserRepository]”类型的对象无法转换为“IUserRepository”类型

谁能看到我做错了什么?

最佳答案

你应该通过 mockUserRepository.Object而不是 mockUserRepository .

如果您使用强类型 API,这将更加明显:

_container.Register(Component
.For<IUserRepository>()
.Instance(mockUserRepository.Object));

这可以编译,因为 Object 属性实现了 IUserRepository。

关于nunit - 将 Moq 与 Windsor 一起使用 - Moq.Mock[IFoo] 类型的对象无法转换为 IFoo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3133965/

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