gpt4 book ai didi

unit-testing - 从 MockRepository 检索数据?

转载 作者:行者123 更新时间:2023-11-28 20:43:48 26 4
gpt4 key购买 nike

我是单元测试的新手,我在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com