如果我从ViewModelA向ViewModelB发送一条消息,有没有一种方法可以在测试ViewModelA的单元测试中捕获此通知,其中消息被触发?
Messenger.Default.Send<string, ViewModelB>("Something Happened");
如果我从ViewModelA向ViewModelB发送一条消息,有没有一种方法可以在测试ViewModelA的单元测试中捕获此通知,其中消息被触发?
Messenger.Default.Send<string, ViewModelB>("Something Happened");
Messenger.Default.Send<string, IMessageTarget>("Something Happened");
这不是我最喜欢的解决方案,但它应该可以工作。
或者,在发送了由ViewModelA消除歧义的消息后,您可以在ViewModelB中注册带有特定令牌的消息:
在ViewModelA中:
Messenger.Default.Send<string>("Something Happened", "MessageDisambiguator");
在 ViewModelB 中:
Messenger.Default.Register<string>(
this,
"MessageDisambiguator",
(action) => DoWork(action)
);
更加简洁,同时仍然允许您模拟ViewModelB进行测试。
可能还有更多选项,但这些是我在这个深夜想到的...