rhino-mocks - 在密封非泛型类中,如何 单元测试 调用泛型方法的非泛型方法?

  显示原文与译文双语对照的内容

使用 [assembly:InternalsVisibleTo()]


public sealed class AppService
{
//TODO: fix dev's spelling
//want to test this
 public AddSubscribtionResponse AddSubscribtion(AddSubscribtionRequest request)
 {
 return ExecuteQueryProc<AddSubscribtionResponse>("spAddAppToUserGroup", request).First();
 }

//I want to stub or interaction test the call to here
 #if DEBUG
 internal
 #endif
 List<T> ExecuteQueryProc<T>(string query, object parameters = null)
 {
 var cn=GetConnection();
//DatabaseCommand is a static class =(
 return DatabaseCommand.ExecuteQueryProc<T>(cn, query, parameters);
 }
}

我在让 Rhino stub或者拦截执行查询过程方法时所做的每一次尝试都失败了。


var service = MockRepository.GeneratePartialMock<AppService>(null);
service.Stub(f => f.ExecuteQueryProc<AddSubscribtionRequest>(null, null)).IgnoreArguments().Return(new List<AddSubscribtionRequest>());

var expected = new AddSubscribtionRequest();
var actual = service.AddSubscribtion(expected);

投掷 System.InvalidOperationException: ExecuteReader: CommandText property has not been initialized

时间: 原作者:

从类( 如果类不能从它继承,rhino.mocks 无法代理你的类) 中删除"密封"。 而且ExecuteQueryProc必须是虚拟的,才能实现它的功能。

原作者:
...