使用Moq模拟复杂的对象,如selenium webdriver

时间:2013-10-01 04:40:16

标签: c# moq

我正在尝试模拟selenium web驱动程序。我使用以下代码:

    public  IWebDriver GetMockDriver()
    {
        this.Mock = new Mock<IWebDriver>();
        return (IWebDriver)this.Mock.Object;            
    }

如果我只是访问驱动程序属性,一切都很好,但是当我尝试访问属于Driver的对象时,例如:

             driver.Manage().Window.Maximize();

我找回了System.NullReferenceException。

我真的不希望/需要跟踪对Mock对象的调用,更多的是我想要实现iWebDriver的东西所以我可以使用TDD编写我的selenium测试而不必实际创建一个实例真正的网络驱动程序每次。

1 个答案:

答案 0 :(得分:2)

如果要调用特定成员

,则必须在模拟上定义实现
this.Mock.Setup(x => x.SomeMethod()).Returns(someObject);

尝试上面的一些变化。否则,您的模拟方法将返回该成员的defualt数据类型(可能为null)