【发布时间】:2011-11-19 21:00:33
【问题描述】:
总的来说,我是 rhino 模拟和单元测试的新手。我开始为我的 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 模拟来存根服务器,用一些值预先填充 TheData。我调用了视图模型构造函数,然后尝试比较计数。
我的问题是我不知道如何让我的服务器真正回调到我的视图模型中。调用 vm 构造函数后,InitializeData() 按预期调用,但未调用 stub 服务器的 GetData。
我怎样才能使这个简单的测试工作?
【问题讨论】:
-
hmm,关于
Server的GetData(Action)方法...不是100% 肯定的,但我认为您不希望客户端通过@987654325 指定服务器返回的内容@。如果我错了,请有人纠正我。 -
在我的情况下,服务器可能需要一段时间来检索所需的数据,因此当客户端请求数据时,它会提供一个回调,以便在数据准备好并且可用时调用该回调。服务器实际返回的内容不受客户端影响。
-
我认为如果客户端使用异步检索会更好。
-
请包含您已经尝试过的 Rhino.Mocks 代码。
标签: wpf unit-testing mvvm rhino-mocks