小编use*_*407的帖子

Moq是派生类的基类函数

我是Moq的新手,我刚看了莫青的复数视频,所以我觉得有权去写一些测试.我有一个基类让我们说Sheet实现了一个接口ISheet.Sheet是页面的基类:

abstract class Sheet: ISheet
{
    public virtual void CreateSheet()  // Defined in ISheet
    {
    }
    public virtual void BuildSheet() // Defined in ISheet
    {
    }
    //and some abstract methods, etc.
}

public class Page : Sheet
{
    public override void CreateSheet()
    {
        BuildSheet(); // Base class implementation
    }
}
Run Code Online (Sandbox Code Playgroud)

我覆盖了基类中的一个方法CreateSheet(),但我想测试BuildSheet()基类中的方法是从我的派生类调用的:

所以在我的测试类中,我将SQ替换为接口而不是接口

var MockSheet = new Moq<Page>();
Run Code Online (Sandbox Code Playgroud)

调用方法:

var actual = MockSheet.Object.CreateSheet(); 
Run Code Online (Sandbox Code Playgroud)

然后验证

MockSheet.Verify(x => x.BuildSheet(), Times.AtLeastOnce);
Run Code Online (Sandbox Code Playgroud)

相反,我得到MockException"在模拟上预期调用至少一次,但从未执行过.永远不会调用CreateSheet方法.如果我将CreateSheet方法更改为:

public void CreateDocSheet() // removed override
{
    BuildSheet() …
Run Code Online (Sandbox Code Playgroud)

c# moq

6
推荐指数
2
解决办法
1万
查看次数

标签 统计

c# ×1

moq ×1