0

这里非常少。我有一个要测试的视图模型,但我不确定我是否只需要实现一个接口,或者是否有一个模拟框架可以为我做这件事。

我想要做的是给我的视图模型一个 IProcessQueueCommand,并触发 MessageProcessed 事件,该事件将执行我的 lambda,然后设置 LastProcessedMessage

视图模型:

public string LastProcessedMessage
{
    get
    {
        return this.lastProcessedMessage;
    }
    private set
    {
        this.lastProcessedMessage = value;
        this.FirePropertyChanged("LastProcessedMessage");
    }
}private string lastProcessedMessage;

public IProcessQueueCommand ProcessQueueCommand
{
    get
    {
        return this.processQueueCommand;
    }
    set
    {
        this.processQueueCommand = value;
        this.processQueueCommand.MessageProcessed += (evt) =>
        {
            this.LastProcessedMessage = evt.Text;
        };
    }
}private IProcessQueueCommand processQueueCommand;
4

1 回答 1

0

您可以使用假对象或模拟对象对其进行测试。

假对象:实现 IProcessQueueCommand 接口并公开“触发事件”方法的对象。您可以在视图模型中注入一个实例,调用“触发事件”方法,最后测试 LastProcessedMessage 属性

模拟对象:完全一样,但假实现和“火灾事件”方法是由模拟框架动态生成的。

希望能帮助到你。

于 2013-12-14T01:10:33.550 回答