我是犀牛模拟器和单元测试的新手。我开始为我的wpf mvvm应用程序编写一些测试。下面是一个示例场景,我想测试:犀牛模拟单元测试方法参数
视图模型:
List<DataItems> _theData = new List<DataItems>();
public MyViewModel(IServer server)
{
_server = server;
InitializeData();
}
private void InitializeData()
{
_server.GetData(MyCallback);
}
private void MyCallback()
{
_theData = _server.TheData;
}
public List<DataItems> VMData
{
get
{
return _theData;
}
}
服务器:
public List<DataItems> TheData
{
get
{
return _cachedData;
}
}
public void GetData(Action callBack)
{
//Populate cached data
...
if(callBack != null)
{
callBack();
}
}
在我的测试,我想验证viewModel.VMData.Count = = server.TheData.Count。我尝试使用rhino mock来存储服务器,并用一些值预先填充TheData。我调用了视图模型构造函数,然后尝试比较计数。
我的问题是,我不知道如何让我的服务器实际回调我的视图模型。在调用vm构造函数之后,InitializeData()将按预期调用,但不会创建存根服务器的GetData调用。
我该如何做这个简单的测试工作?
嗯,关于Server的'GetData(Action)'方法......并不是100%肯定的,但我不认为你希望客户端通过一个Action来指定服务器返回的结果。有人纠正我,如果我错了。 –
在我的情况下,服务器可能需要一段时间才能检索所需的数据,因此当客户端请求数据时,它会提供回调,以便在数据准备就绪并可用时调用该回调。服务器实际返回的内容不受客户端的影响。 – Flack
我认为如果客户端使用异步检索会更好。 –