2011-06-05 91 views
0

是以下几种可能 -Rhino Mocks返回一个存根?

var stub1 = MockRepository.GenerateStub<stub1>(); 
var stub2 = MockRepository.GenerateStub<stub2>(); 

int returnValue = 1; 

stub2.Stub(x => x.stub2Method(Arg<int>.Is.Anything).Return(returnValue).Repeat.Once(); 
Stub1.Stub(x =>x.stub1Method(Arg<int>.Is.Anything)).Repeat.Once().Return(stub2); 

即可以预期存根从存根回来了?

在我的代码,当stub2.stub2Methodstub1.stub1Method叫,null返回,而不是returnValue

任何想法为什么?

+0

对不起,我有一个语法错误,上面是可能的。 – NiladriBose 2011-06-05 19:02:27

回答

0

是的,尽管它可能取决于你正在剔除的东西。

作为一个例子,以下工作:

public class Class1 
{ 
    public virtual IClass2 Stub1Method() 
    { 
     throw new NotImplementedException(); 
    } 
} 

public interface IClass2 
{ 
    int StubMethod2(); 
} 

[TestClass] 
public class UnitTest1 
{ 
    [TestMethod] 
    public void TestMethod1() 
    { 
     var stub1 = MockRepository.GenerateStub<Class1>(); 
     var stub2 = MockRepository.GenerateStub<IClass2>(); 
     var expected = 1; 
     stub2.Stub(s => s.StubMethod2()).Repeat.Once().Return(1); 
     stub1.Stub(s => s.Stub1Method()).Return(stub2).Repeat.Once(); 
     var result = stub1.Stub1Method().StubMethod2(); 
     Assert.AreEqual(expected, result); 
    } 
}