存储库测试不会返回预期的实体数量

时间:2014-09-11 04:08:18

标签: c# unit-testing repository-pattern nunit-2.6.2

注意> 国家/地区表中的记录数:36条记录。

我的代码:

[TestFixture]
    public class CountriesControllerTest
    {
        Mock<IJN_CountryRepository> countryRepository;
        Mock<IUnitOfWork> unitOfWork;

        IJN_CountryService countryService;

        [SetUp]
        public void SetUp()
        {
            countryRepository = new Mock<IJN_CountryRepository>();
            unitOfWork = new Mock<IUnitOfWork>();
            countryService = new JN_CountryService(countryRepository.Object, unitOfWork.Object);
        }
        [Test]
        public void ManyDelete()
        {
            var count = countryService.GetCount();
            // Assert
            Assert.AreEqual(36, count);
        }
    }

NUnit测试消息:

enter image description here

为什么呢?为什么不读取记录数量?

1 个答案:

答案 0 :(得分:0)

这两行

countryRepository = new Mock<IJN_CountryRepository>();
unitOfWork = new Mock<IUnitOfWork>();

您创建了一个虚假对象,具有无逻辑的对象,也没有任何关于任何数据库的知识。这些是mocks。您需要指导他们做什么才能使其发挥作用,例如:

var sampleCountries = Create36SampleCountries();
countryRepository = new Mock<IJN_CountryRepository>();
countryRepository.Setup(m => m.Countries).Returns(sampleCountries);

为了让您的测试与真实数据库一起使用,您不应该使用模拟而是使用实际的存储库(请注意,这将是集成测试)。