【发布时间】:2015-07-16 22:25:45
【问题描述】:
我有一个根据其他依赖结果来操作依赖的类:
public class PdfPagePresenter : IPdfPagePresenter
{
private readonly IPdfPageView _view;
private readonly IPdfPageVisitor<bool> _querystringvalidator;
private readonly IPdfPageVisitor<bool> _servicepackagevalidator;
private readonly IPdfPageVisitor<byte[]> _watermarkgenerator;
public PdfPagePresenter(IPdfPageView view, IPdfPageVisitorAbstractFactory visitorAbstractFactory)
{
_view = view;
_querystringvalidator = visitorAbstractFactory.QueryStringValidatorFactory().Invoke();
_servicepackagevalidator = visitorAbstractFactory.ServicePackageValidatorFactory().Invoke();
_watermarkgenerator = visitorAbstractFactory.WatermarkStreamGeneratorFactory().Invoke();
}
public void OnPageLoad()
{
if (!_view.Accept(_querystringvalidator))
{
_view.RespondRedirect("Somepage.aspx");
return;
}
if (!_view.Accept(_servicepackagevalidator))
{
_view.RespondWrite("Cannot find the service package in our system.");
return;
}
_view.RespondBinaryWrite(_view.Accept(_watermarkgenerator), "application/pdf");
}
}
我想我可以模拟验证工厂和字节工厂来创建响应,但是我如何测试依赖项中的方法是否被调用。这是一个编排类型类。
【问题讨论】:
-
所以你想验证 OnPageLoad 是否被调用?
-
我想测试多个案例,每个验证都执行正确的操作
-
如果 querystringvalidator 返回 false 我想知道视图重定向被调用,如果 servicepackagevalidator 返回 false 则调用视图写入,否则调用二进制写入
-
我明白了,所以你需要一个起订量和可验证:stackoverflow.com/questions/347818/…
标签: c# dependency-injection mocking tdd