servicestack,msgpack,fixture,Testing,Mocking,servicestack,Msgpack,Fixture" /> servicestack,msgpack,fixture,Testing,Mocking,servicestack,Msgpack,Fixture" />

Testing ServiceStack&x27的录像机;s JsonServiceClient

Testing ServiceStack&x27的录像机;s JsonServiceClient,testing,mocking,servicestack,msgpack,fixture,Testing,Mocking,servicestack,Msgpack,Fixture,使您能够“记录测试套件的HTTP交互,并在未来的测试运行期间重播它们,以进行快速、确定、准确的测试。” 我想使用ServiceStack的JsonServiceClient创建类似的东西,但我无法让它工作。我最近的一次尝试失败了。我想让我目前的尝试奏效,或者就另一种可行的方法提出建议 公共静态类备忘录 { 已缓存公共静态函数(此函数) { var cachedResults=新字典(); 字符串文件名=Environment.GetFolderPath(Environment.SpecialFo

使您能够“记录测试套件的HTTP交互,并在未来的测试运行期间重播它们,以进行快速、确定、准确的测试。”

我想使用ServiceStack的JsonServiceClient创建类似的东西,但我无法让它工作。我最近的一次尝试失败了。我想让我目前的尝试奏效,或者就另一种可行的方法提出建议

公共静态类备忘录
{
已缓存公共静态函数(此函数)
{
var cachedResults=新字典();
字符串文件名=Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)+“\\\”+(typeof(TResult)).Name+“.jsv”;
var serializer=MessagePackSerializer.Create();
if(cachedResults.Count==0)
{
//////从文件加载缓存
使用(FileStream fs=newfilestream(文件名,FileMode.Create,FileAccess.Write))
{
cachedResults=serializer.Unpack(fs);
}
}
返回(参数)=>
{
结果结果;
锁(缓存结果)
{
if(!cachedResults.TryGetValue(参数,输出结果))
{
结果=函数(参数);
cachedResults.Add(参数、结果);
//////更新缓存文件
使用(FileStream fs=newfilestream(文件名,FileMode.Create,FileAccess.Write))
{
serializer.Pack(fs,cachedResults);
}
}
}
返回结果;
};
}
}
类MemoizeJsonClient:JsonServiceClient、IServiceClient、IRestClient
{
私有函数被缓存;
私有JsonServiceClient客户端;
公共响应Get(IReturn请求)
{
如果(_getCached==null)
{
Func Func=GetImpl;
_getCached=func.AsCached();
}
返回_getCached(请求);
}
私有树响应GetImpl(IReturn请求)
{
返回client.Get(请求);
}
公共MemoizeJsonClient(字符串BaseUri){
client=newjsonserviceclient(BaseUri);
}
}
这样称呼:

[测试]
公共void TestReports2()
{
字符串主机=”http://localhost:1337";
字符串BaseUri=Host+“/”;
List testcases=newlist();
添加(新选项(“名称”、“20130815”、“20130815”);
foreach(测试用例中的选项)
{
TransactionsReq transRequest=新TransactionsReq();
transRequest.source=“source”;
transRequest.name=新列表(新字符串[]{options.name});
transRequest.startDate=options.startDate;
transRequest.endDate=options.endDate;
MemoizeJsonClient=新的MemoizeJsonClient(BaseUri);
列出交易记录;
TransactionReqResponse transResponse=client.Get(transRequest);
事务=transResponse.data;
}
}
但我得到了以下错误:

发生System.Runtime.Serialization.Serialization异常 HResult=-2146233076 Message=无法序列化类型“ServiceStack.ServiceHost.IReturn`1[ImageServerWrapper.DTO.TransactionReqResponse]”,因为它没有任何可序列化的字段或属性。 Source=MsgPack 堆栈跟踪: 在MsgPack.Serialization.SerializerBuilder`1.CreateSerializer()处 内部异常:
我认为您不能使用MessagePackSerializer.Create on接口。更改IReturn的所有实例(在Func中)