Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.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# 如何用Rhino mock模拟未实现的方法?_C#_Unit Testing_Mocking_Rhino Mocks_Rhino - Fatal编程技术网

C# 如何用Rhino mock模拟未实现的方法?

C# 如何用Rhino mock模拟未实现的方法?,c#,unit-testing,mocking,rhino-mocks,rhino,C#,Unit Testing,Mocking,Rhino Mocks,Rhino,我有这个简化的实现和下面的单元测试: public class Parent { public virtual int GetSomeValue() { throw new NotImplementedException(); } } public class Child { public Parent MyParent { get; set; } public virtual Parent GetParent() {

我有这个简化的实现和下面的单元测试:

public class Parent
{
    public virtual int GetSomeValue()
    {
        throw new NotImplementedException();
    }
}

public class Child
{
    public Parent MyParent { get; set; }

    public virtual Parent GetParent()
    {
        return MyParent;
    }

    public virtual int GetParentsValue()
    {
        var parent = GetParent();

        return parent.GetSomeValue();
    }
}
如果不实现父对象的GetSomeValue()方法,如何使用Rhino Mock测试GetParentsValue()方法

谢谢

您可以使用以下代码:

Child child = MockRepository.GenerateStrictMock<Child>();
child.Stub(c => c.GetParentsValue()).Return(1);

Assert.AreEqual(1, child.GetParentsValue());
您可以使用以下代码:

Child child = MockRepository.GenerateStrictMock<Child>();
child.Stub(c => c.GetParentsValue()).Return(1);

Assert.AreEqual(1, child.GetParentsValue());
您可以这样做:

Child target = new Child();

Parent mockParent = MockRepository.GenerateStub<Parent>();
mockParent.Stub(x => x.GetSomeValue()).Return(1);

target.MyParent = mockParent;

int value = target.GetParentsValue();

Assert.AreEqual(value, 1);
Child target=new Child();
Parent mockParent=MockRepository.generateSub();
mockParent.Stub(x=>x.GetSomeValue()).Return(1);
target.MyParent=mockParent;
int value=target.GetParentsValue();
断言.AreEqual(值1);
您可以执行以下操作:

Child target = new Child();

Parent mockParent = MockRepository.GenerateStub<Parent>();
mockParent.Stub(x => x.GetSomeValue()).Return(1);

target.MyParent = mockParent;

int value = target.GetParentsValue();

Assert.AreEqual(value, 1);
Child target=new Child();
Parent mockParent=MockRepository.generateSub();
mockParent.Stub(x=>x.GetSomeValue()).Return(1);
target.MyParent=mockParent;
int value=target.GetParentsValue();
断言.AreEqual(值1);

初始化mockParent时失败。我没有使用存根。初始化mockParent失败。我没有用存根。