C#Moqing:模拟方法返回不同的值

时间:2020-03-16 08:21:30

标签: c# nunit moq specflow

我正在使用specflownUnit进行测试。

这是我的方法

var repo = this.MetaDataUnitOfWork.GetRepository<T>();

var (resultSet, pageNumber, itemsPerPage, totalCount) = await repo.GetAll(collectionName, GlobalConstants.SortBy, page, itemsOnPage, maxDepth, activeOnly: activeOnly);

var dtoModels = this.Mapper.Map<IEnumerable<T>, IEnumerable<TDto>>(resultSet).ToList();

return new ResponseModel<TDto>{ ResultSet = dtoModels, Page = pageNumber, ItemsOnPage = itemsPerPage, ItemsTotal = totalCount };

这是我的测试功能

using(var mock = AutoMock.GetLoose())
{
    var mockRepository = mock.Mock<IMetaDataRepository<HierarchyNodeName>>();
    mockRepository
        .Setup(x => x.GetAll(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>(), It.IsAny<int>(), It.IsAny<int>(), It.IsAny<bool>(), It.IsAny<string[]>(), It.IsAny<bool>()))
        .ReturnsAsync(GetAllHierarchyNodeNames());

    mock.Mock<IMetaDataUnitOfWork>()
        .Setup(x => x.GetRepository<HierarchyNodeName>())
        .Returns(() => mockRepository.Object);

    var cls = mock.Create<HierarchyNodeNamesService>();

    this.scenarioContext["expected"] = GetAllHierarchyNodeNamesDto();
    this.scenarioContext["actual"] = await cls.GetAllEntities();
}

在我的模拟中,我设置GetAll方法以返回一个元组(2个项,1、10、2)。但是当我运行测试时,它总是返回(0个,0、0、0)

没有运行时错误。但是由于实际结果不同,因此该场景失败了。

0 个答案:

没有答案