我可以使用模拟对象来测试吗?

时间:2013-11-07 17:24:34

标签: .net unit-testing mocking moq

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

我想要做的是给我的viewmodel一个IProcessQueueCommand,并激活将执行我的lambda的MessageProcessed事件,然后设置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;

1 个答案:

答案 0 :(得分:0)

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

假对象: 实现IProcessQueueCommand接口并公开“fire event”方法的对象。您可以在视图模型中注入实例,调用“fire event”方法并最终测试LastProcessedMessage属性

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

希望它有所帮助。