unit-testing - 从 MockRepository 检索数据?

标签 unit-testing testing mocking

我是单元测试的新手,我在 ASP.NET MVC 中使用 Rhino Mock

我用这段代码创建了一个主测试类:

    [TestFixture]
    public class PersistenceTest
    {
        [Test]
        protected T SaveAndLoadEntity<T>(T entity) where T : BaseEntity
        {
            var mockDataSource = MockRepository.GenerateMock<IRepository<T>>();

            mockDataSource.Add(entity);

            var fromDb = mockDataSource.FindBy(entity.Id);

            return fromDb;
        }
    }

并像这样创建一个客户测试类:

    [TestFixture]
    public class CustomerTests : PersistenceTest
    {
        [Test]
        public void Can_Save_And_Load_Customer()
        {
            var customer = new Customer()
            {
                Id = 12,
                Name = "Reza",
                Family = "Pazooki",
                Company = "Rozaneh",
                Email = "ipazooki@gmail.com",
                Mobile = "09352463668",
                Fax = "021-44869059",
                Tel = "021-44869059",
                WebSite = "www.rozanehmedia.com"
            };

            var fromDb = SaveAndLoadEntity(customer);

            fromDb.ShouldNotBeNull();
        }
    }

但是当运行代码时,它说数据库的返回值是 NULL!!!

我不知道我的代码有什么问题,但我从模拟存储库中保存和检索数据,似乎一切正常。

tnx 形式的任何帮助:)

最佳答案

Mocks用于记录对对象的调用以供进一步验证或在调用时提供值(以后的行为需要设置)。

在您的 SaveAndLoadEntity 方法中,您调用 mock(AddFindBy)。由于 mock 是一个没有真实行为的假对象,那些调用什么都不做(它们不会保存或提取任何实体到​​/从数据库)。

如果您想测试持久层,您应该针对真实 数据库实例(或可选的内存实例)进行测试。

// [Test] attribute is not needed
protected T SaveAndLoadEntity<T>(T entity) where T : BaseEntity
{
    var dataSource = new DataSource("connection string");
    dataSource.Add(entity);
    var fromDb = dataSource.FindBy(entity.Id);
    return fromDb;
}

目前,您正在调用 not-setup mock,但没有任何效果。

关于unit-testing - 从 MockRepository 检索数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21645175/

相关文章:

unit-testing - 如何在 Grails 3 单元测试中注入(inject)日志属性?

c# - 单元测试难题 : OleDbCommand

unit-testing - 在 JerseyTest 中访问 Spring bean

testing - 关于将 CodeceptJS 与 Sencha ExtJS 一起用于测试自动化的任何反馈

ruby-on-rails - 何时以及何时不 stub /模拟测试

android - Robolectric 3.0 - 使用 applicationIdSuffix 时资源未解析

testing - 新的IE9是独立浏览器吗

testing - 自动验证我网站的链接是否指向存在的 url?

java - 使用JUnit查询数据库的测试方法

java - Spock:在 stub 中返回输入参数