当前位置:  开发笔记 > 编程语言 > 正文

犀牛嘲笑,空虚和属性

如何解决《犀牛嘲笑,空虚和属性》经验,为你挑选了1个好方法。

刚开始使用Rhino Mocks并且我有一个非常简单的问题,我如何使用设置属性的void来模拟一个类?

class SomeClass : ISomeClass
{
    private bool _someArg;

    public bool SomeProp { get; set; }

    public SomeClass(bool someArg)
    {
        _someArg = someArg; 
    }

    public void SomeMethod()
    {
        //do some file,wcf, db operation here with _someArg
        SomeProp = true/false;
    }
}

显然这是一个非常人为的例子,谢谢.



1> Spoike..:

在您的示例中,您不需要RhinoMocks,因为您显然正在测试被测试类的功能.简单的单元测试将改为:

[Test]
public void SomeTest()
{
    var sc = new SomeClass();
        // Instantiate SomeClass as sc object
    sc.SomeMethod();
        // Call SomeMethod in the sc object.

    Assert.That(sc.SomeProp, Is.True );
        // Assert that the property is true... 
        // or change to Is.False if that's what you're after...
}

当你有一个依赖于其他类的类时,测试mocks会更有趣.在你的例子中,你提到:

//使用_someArg执行一些文件,wcf,db操作

也就是说你期望其他一些类设置SomeClass属性,这对mocktest更有意义.例:

public class MyClass {

    ISomeClass _sc;

    public MyClass(ISomeClass sc) {
        _sc = sc;
    }

    public MyMethod() {
        sc.SomeProp = true;
    }

}

所需的测试将是这样的:

[Test]
public void MyMethod_ShouldSetSomeClassPropToTrue()
{
    MockRepository mocks = new MockRepository();
    ISomeClass someClass = mocks.StrictMock();

    MyClass classUnderTest = new MyClass(someClass);

    someClass.SomeProp = true;
    LastCall.IgnoreArguments();
        // Expect the property be set with true.

    mocks.ReplayAll();

    classUndertest.MyMethod();
        // Run the method under test.

    mocks.VerifyAll();
}

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有