以下是可能的-
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);也就是说,存根是否可以从存根返回期望的存根?
在我的代码中,当从stub1.stub1Method调用stub2.stub2Method时,返回的是null而不是returnValue。
知道为什么吗?
发布于 2011-07-29 09:13:34
是的,尽管这可能取决于您要清除的内容。
作为一个例子,下面的例子是有效的:
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);
}
}https://stackoverflow.com/questions/6245004
复制相似问题