我在做文件转换这是多发步骤的过程。 STEAP1的输出作为输入传递给STEP2。 STEP2的输出是分配给Context.FinalOutput属性的最终输出。由于最终输出是流,我希望调用者决定使用哪个流。这就是为什么调用者将通过流作为上下文的一部分。 我只是想知道,我用Rhino Mocks写的测试是正确的?如何使用Rhino Mocks进行流式传输?
namespace Test
{
public interface IContextInfo
{
// Input parameters here
// Output parameter
Stream FinalOutput { get; set; }
}
public interface IStep1
{
void DoStep1(IContextInfo contextInfo, Stream outputOfStep1);
}
public interface IStep2
{
void DoStep2(Stream outputOfStep1, Stream outputOfStep2);
}
public interface IController
{
void Execute();
}
public class MyController : IController
{
IContextInfo _contextInfo = null;
IStep1 _step1 = null;
IStep2 _step2 = null;
public MyController(IContextInfo contextInfo, IStep1 step1, IStep2 step2)
{
_contextInfo = contextInfo;
_step1 = step1;
_step2 = step2;
}
public void Execute()
{
using (Stream outputOfStep1 = new MemoryStream())
{
this._step1.DoStep1(_contextInfo, outputOfStep1);
this._step2.DoStep2(outputOfStep1, this._contextInfo.FinalOutput);
}
}
}
[TestClass]
public class ControllerTests
{
[TestMethod]
public void Controller_Execute()
{
MockRepository mock = new MockRepository();
var context = mock.Stub<IContextInfo>();
var step1 = mock.Stub<IStep1>();
var step2 = mock.Stub<IStep2>();
var outputOfStep1 = mock.StrictMock<Stream>();
context.FinalOutput = mock.StrictMock<Stream>();
step1.Expect(x => x.DoStep1(context, outputOfStep1)).IgnoreArguments();
step2.Expect(c => c.DoStep2(outputOfStep1,context.FinalOutput)).IgnoreArguments();
mock.ReplayAll();
var controller = new MyController(context, step1, step2);
controller.Execute();
//Assert
Assert.IsNotNull(controller);
mock.VerifyAll();
}
}
}
它是什么,你想测试?你得到编译错误吗?运行测试时出错? – PatrickSteele