0

我有一个带有一堆“步骤”的向导,并且在每个步骤中都有一堆“输入”(文本框、单选按钮列表、复选框列表、下拉菜单)。

一切都很好,但我现在正试图对向导的最后“提交”步骤执行一些计算,我需要做两件事:

1) 计算出 a+b+(c*2) 等的逻辑。我不需要“测试”这个,我只有一堆 if/else 子句,并且正在映射计算。

2)为了方便上述操作,并快速查看输出(包括 CSS / UI 和其他内容),我想传递所有步骤的假数据。如何最好地做到这一点?

我正在使用一堆模型/视图模型,所以MyModel可能有:

public string FirstName { get; set; }

并且MyViewModel会有:

public MyModel MyModel { get; set; }

现在,大约有 10 个模型被拉入一个视图模型,基本上有 50 多个输入。我的问题是,如果我想看到“提交”的最终结果,我每次都必须通过向导。

为此我想跳过它,传递虚假数据而不通过整个向导(假设我的入口点是我的“确认”步骤,其中有一个“提交”按钮,所以我想从“确认”,然后单击“提交”(否则,也许我可以从“提交”步骤开始))。

4

1 回答 1

0

听起来您没有对此进行单元测试,因此您可以伪造它的一种方法是在控制器的确认获取操作中创建一个虚拟视图模型:

    var MyViewModel dummyModel;

    var infoStepModel info;
    info.property = xxx;

    dummyModel.Property = XXX;
    dummyModel.Property = 123;
    dummyModel.infoStep = info;

    return View(dummyModel);

然后将属性更改为您需要的设置,以测试您的帖子逻辑的每个部分。它会有点慢,因为您需要在每次运行时更改属性,直到您测试了所有逻辑流程。

如果没有测试框架,您将被迫运行程序并按照您的描述输入每个步骤。有了这个,您至少可以放弃一遍又一遍地执行每个步骤,您可以直接进入确认步骤并准备好假数据。

此外,如果您将逻辑从控制器的 post 操作中移出并放入一个接受模型的类中,如果您使用的是测试框架,您也可以更轻松地进行测试。然后,您将使用控制器仅传递数据,并可能响应它传回的类结果。

于 2012-05-12T16:50:50.130 回答