惩戒数据访问层模拟犀牛

编程入门 行业动态 更新时间:2024-10-09 20:21:17
本文介绍了惩戒数据访问层模拟犀牛的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 我

如何使用犀牛制品我有以下类模拟数据访问层:

公共接口IDataAccess { INT ExecuteNoneQuery(SqlConnection的连接字符串storedProcedureName, IEnumerable的<&SqlParameter的GT; sqlParameters); } 公共类数据访问:IDataAccess {公众诠释ExecuteNoneQuery(SqlConnection的连接字符串storedProcedureName,的IEnumerable<的SqlParameter> sqlParameters ) {使用(的SqlCommand命令= connection.CreateCommand()) { //做一些东西返回command.ExecuteNonQuery(); } } } 公共类DbOperation< T> {私人IDataAccess _access; 公共DbOperation(IDataAccess访问) { _access =接入; } 公众诠释插入(T项目,SqlConnection的连接字符串spName) { IDbObjectFactory< T> parametersFactory =新SqlParameterFactory< T>(); VAR参数=(IList的<&SqlParameter的GT;)parametersFactory.GetDbObject(项目); 返回_access.ExecuteNoneQuery(连接,spName,参数); } }

解决方案

下面是一些解释一个例子:

要测试的情况:结果当方式 ExecuteNoneQuery 类数据访问被称为结果,则 command.ExecuteNonQuery()应该叫:

// 1.创建`SqlCommand`模拟: VAR命令= MockRepository.GenerateMock<&的SqlCommand GT;(); // 2.创建`SqlConnection`存根: VAR连接= MockRepository.GenerateStub< SqlConnection的>(); // 3.设置connection.CreateCommand()返回嘲笑命令:连接 .Stub(C => c.CreateCommand())。返程(命令); // 4.是否测试动作: VAR数据访问=新的DataAccess(); dataAccess.ExecuteNoneQuery(连接,NULL,NULL); //断言command.ExecuteNonQuery()被调用: command.AssertWasCalled(C => c.ExecuteNonQuery());

希望,解释了一下如何使用犀牛模拟。

How can i mock data access layer using Rhino mocks I have the following classes:

public interface IDataAccess { int ExecuteNoneQuery(SqlConnection connection, string storedProcedureName, IEnumerable<SqlParameter> sqlParameters); } public class DataAccess : IDataAccess { public int ExecuteNoneQuery(SqlConnection connection, string storedProcedureName, IEnumerable<SqlParameter> sqlParameters) { using (SqlCommand command = connection.CreateCommand()) { // do some stuff return command.ExecuteNonQuery(); } } } public class DbOperation<T> { private IDataAccess _access; public DbOperation(IDataAccess access) { _access = access; } public int Insert(T item, SqlConnection connection,string spName) { IDbObjectFactory<T> parametersFactory = new SqlParameterFactory<T>(); var parameters = (IList<SqlParameter>)parametersFactory.GetDbObject(item); return _access.ExecuteNoneQuery(connection, spName, parameters); } }

解决方案

Here is an example with some explanations:

To test the case: WHEN method ExecuteNoneQuery of class DataAccess is called THEN command.ExecuteNonQuery() should be called:

// 1. Create `SqlCommand` Mock: var command = MockRepository.GenerateMock<SqlCommand>(); // 2. Create `SqlConnection` Stub: var connection = MockRepository.GenerateStub<SqlConnection>(); // 3. Setup connection.CreateCommand() to return mocked command: connection .Stub(c => c.CreateCommand()) .Return(command); // 4. Do test action: var dataAccess = new DataAccess(); dataAccess.ExecuteNoneQuery(connection, null, null); // Assert command.ExecuteNonQuery() has been called: command.AssertWasCalled(c => c.ExecuteNonQuery());

Hope that explains a bit how to use Rhino Mock.

更多推荐

惩戒数据访问层模拟犀牛

本文发布于:2023-11-03 23:51:57,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1556413.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:犀牛   数据

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!