如何在此特定方案中使用Moq和xUnit添加单元测试?

时间:2017-02-26 20:49:41

标签: c# .net moq autofac xunit

我的数据/服务层中有这个方法。我们正在开始使用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);
}

1 个答案:

答案 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....
}

但是,我不知道你的某些函数是做什么的,或者它们有什么依赖关系,你可能需要再模拟一些东西。