我在做文件轉換這是多發步驟的過程。 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