如果我的目标从ViewModelA到ViewModelB消息,有没有办法赶上从被测试ViewModelA该消息引发我的单元测试此通知?
Messenger.Default.Send<string, ViewModelB>("Something Happened");
Run Code Online (Sandbox Code Playgroud)
我看到两个选择:
首先,您可以使用"标记"界面标记ViewModelB,并使用它而不是实际的类名.
Messenger.Default.Send<string, IMessageTarget>("Something Happened");
Run Code Online (Sandbox Code Playgroud)
这不是我最喜欢的解决方案,但应该可行.
或者,您可以在ViewModelB中注册具有特定令牌的消息,同时从ViewModelA发送消除歧义的消息:
在ViewModelA中:
Messenger.Default.Send<string>("Something Happened", "MessageDisambiguator");
Run Code Online (Sandbox Code Playgroud)
在ViewModelB中:
Messenger.Default.Register<string>(
this,
"MessageDisambiguator",
(action) => DoWork(action)
);
Run Code Online (Sandbox Code Playgroud)
更清洁,仍然允许您模拟ViewModelB进行测试.
可能有更多的选择,但这些是在这个晚些时候突然出现的问题......
| 归档时间: |
|
| 查看次数: |
1399 次 |
| 最近记录: |