2013-04-10 72 views
0

如果这个问题已经被提出,我很抱歉。我对单元测试非常陌生,我想用犀牛来嘲笑。用犀牛模拟模拟数据库对象

所以问题是......我有一个方法来测试,并且该方法假设根据输入参数回收一些数据并返回为datatable。

它也做了一些计算,找出哪些存储过程应该被调用以及使用哪一组参数。

我的问题是,当我使用模拟对象调用方法....它会在数据库检索代码行时抛出一个错误,因为对象没有设置为instanse。这是预料之中的,因为我们正在嘲笑它们,因为它们没有数据从数据库中退缩。

那么可以做那件事情。

回答

1

好像是介绍Repository Pattern的好时机。

如果您介绍的是,生成查询到DB的逻辑和从DB读取数据的逻辑将封装在Repository中。

在这种情况下,您可以在测试中模拟/存储存储库,并且可以单元测试所有使用存储库的类,而无需创建测试数据库。

存储库模拟将验证传入参数是否正确。
而存储库存根将返回每个特定测试所需的任何特定于测试的数据。