我的数据/服务层中有这个方法。我们正在开始使用xUnit和MoQ进行单元测试。我们使用Autofac作为IoC容器。
如何使用xUnit和MoQ为此方法设置单元测试? 请求使用假(如果需要)
的特定代码插图public async Task<AddressModel> AddAddress(string useridKey, AddressModel addressModel)
{
IAddress address = AddressConverters.ToIAddressFromAddressModel(addressModel);
IAddress newAddress = await _userManager.AddShippingAddressAsync(userKey, address).ConfigureAwait(false);
return AddressConverters.ToAddressModel(newAddress);
}
答案 0 :(得分:0)
您需要注入模拟用户管理器,然后执行类似
的操作mockUserManager.Setup(arg=>arg.AddShippingAddressAsync(It.Is<string>, It.Is<IAddress>))
.ReturnsAsync(myNewAddressWhateverYouWantToReturn);
我不是100%关于xUnit异步支持,但它看起来应该像
[Fact]
private async Task TestAddingAddress()
{
// inject your mock, either here on setup...
var thingWithAdd = new Foo(); //or inject mock into constructor...
var newAddress = await thingWithAdd.AddAddress("", new AddressModel());
// assert something about it....
}
但是,我不知道你的某些函数是做什么的,或者它们有什么依赖关系,你可能需要再模拟一些东西。