Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用Moq和摩尔数测试非虚拟公共方法?_C#_Moq_Moles - Fatal编程技术网

C# 用Moq和摩尔数测试非虚拟公共方法?

C# 用Moq和摩尔数测试非虚拟公共方法?,c#,moq,moles,C#,Moq,Moles,如果有必要,您将如何使用Moq和Moles测试下面的代码 我想检查在引发“SomeEvent”时是否调用了一次“TestCommand.RaiseCanceTechChanged()”命令 困难在于RaiseCanExecuteChanged是Microsoft.Practices.Prism.Commands.DelegateCommandBase上的一个公共非虚拟方法,Moles引入了其他复杂因素,其中之一是它似乎无法模拟没有返回值的方法 using Microsoft.Practices.

如果有必要,您将如何使用Moq和Moles测试下面的代码

我想检查在引发“SomeEvent”时是否调用了一次“TestCommand.RaiseCanceTechChanged()”命令

困难在于RaiseCanExecuteChanged是Microsoft.Practices.Prism.Commands.DelegateCommandBase上的一个公共非虚拟方法,Moles引入了其他复杂因素,其中之一是它似乎无法模拟没有返回值的方法

using Microsoft.Practices.Prism.Commands;
public class SomeEventClass
{
    public event Action SomeEvent;
}

public class TestClass
{
    public TestClass(SomeEventClass someEventClass)
    {
        TestCommand = new DelegateCommand(() => { /* do stuff */}, CanExecute);
        someEventClass.SomeEvent += () => TestCommand.RaiseCanExecuteChanged();
    }

    private bool CanExecute()
    {
        //Some logic
        return true;
    }

    public DelegateCommand TestCommand { get; private set; }
}

Moles应该能够填充没有返回类型的方法。某种东西正在阻止鼹鼠绕行这种方法


我建议使用存根和依赖注入,而不是构建模拟(这可能需要一段时间)或用Moles填充调用。

你是对的,只是Moles新手犯了个错误。现在,如何让鼹鼠和最小起订量一起玩,但这是另一个问题。