代码之家  ›  专栏  ›  技术社区  ›  Budda

如何用抽象方法测试抽象类中的方法?

  •  1
  • Budda  · 技术社区  · 15 年前

    public abstract MyAbstractClass
    {
        public void MyMethod()
        {
            Testpassed = true;
        }
    
        public abstract int StatusCode{get;internal set;} // **EDIT**: internal setter was added
    
        public bool TestPassed{get;private set;}
    }
    

    我试着做了以下工作:

    [TestMethod()]
    {
        Mock<MyAbstractClass> mockClass = new Mock<MyAbstractClass>();
        mockClass.Object.MyMethod();
        Assert.IsTrue(mockClass.Object.TestPassed);
    }
    

    类型中的方法“set\u StatusCode” 从组件'DynamicProxyGenAssembly2, Version=0.0.0.0,Culture=neutral,PublicKeyToken=null'没有

    请告诉我,我怎样才能解决这个问题?

    谢谢!

    实际上,我可以从MyAbstractClass继承并为“StatusCode”属性提供实现,但是我有一堆属性要实现。。。

    3 回复  |  直到 15 年前
        1
  •  1
  •   Community Mohan Dere    8 年前

    看到了吗 this answer

        2
  •  2
  •   Igor Zevaka    15 年前

    您发布的代码运行良好(除了轻微的拼写错误)。我就是不能让它以同样的错误失败。Moq在运行时实现抽象属性,并使其返回默认值(本例中为0)。试试最新版本的Moq。

    我还要提醒大家不要把测试逻辑放到类中。如果 TestPassed

        3
  •  1
  •   Dmitry Ornatsky    15 年前

    我知道这不是对你的最小起订量问题的回答,但无论如何。即使您有很多抽象属性,VS也非常容易添加空(实际上是抛出)实现。所以,如果 MyMethod 不依赖于这些属性的设计,我会添加一个空的派生类并测试它。

    推荐文章