我有一个带有一堆“步骤”的向导,每一步都有一堆“输入”(文本框,单选按钮列表,复选框列表,下拉列表)。
一切都很好,但我现在正试图在向导的最后“提交”步骤中执行一些计算,我需要做两件事:
1)计算出a + b +(c * 2)等的逻辑。我不需要“测试”这个,我只是有一堆if / else子句并且我正在计算出来。< / p>
2)为了方便上述,并且要快速查看输出(包括CSS / UI和东西),我想从所有步骤传递假数据。怎么做到最好?
我正在使用一堆Models / ViewModel,因此MyModel
可能有:
public string FirstName { get; set; }
和MyViewModel
会有:
public MyModel MyModel { get; set; }
现在,大约有10个模型被拉入一个视图模型,基本上有50多个输入。我的问题是,如果我想看到“已提交”的最终结果,我每次都必须通过向导。
我想跳过它为此目的,传递假数据而不通过整个向导(假设我的入口点是我的“确认”步骤,其中有一个“提交”按钮,所以我想要从“确认”开始,然后点击“提交”(否则,我可以从“已提交”步骤开始))。
答案 0 :(得分:0)
听起来你不是单元测试,所以你可以假装这个是在控制器的确认获取动作中创建一个虚拟视图模型:
var MyViewModel dummyModel;
var infoStepModel info;
info.property = xxx;
dummyModel.Property = XXX;
dummyModel.Property = 123;
dummyModel.infoStep = info;
return View(dummyModel);
然后将属性更改为您需要的设置,以便测试后期逻辑的每个部分。它会有点慢,因为在测试所有逻辑流之前,您需要在每次运行时更改属性。
如果没有测试框架,您将被迫运行程序并按照您的描述输入每个步骤。有了这个,你至少可以放弃一遍又一遍地做每一步,你可以直接进入确认步骤并准备好假数据。
此外,如果您将逻辑移出控制器的post操作并进入接收模型的类,如果您使用的是测试框架,也可以更轻松地测试它。然后,您将使用控制器仅传递数据,并可能响应它传回的类结果。