我想对WiX安装程序的C#CustomAction函数进行快速测试.
即从我的C#WinForms应用程序中调用它们.
因为它已知函数的格式为ActionResult MyAction(Session s)
但是如何创建会话参数以将其传递给函数?
像这样
<code>Session session = ? <--- no constructor session["VAR"]="123"; ActionResult = MyAction(session); </code>
解决方法:
会话对象由Windows Installer初始化,并在运行时填充值.但你不必依赖它.尝试重新构建代码,以便可以独立测试其功能部分.
您的自定义操作可能如下所示:
<code>public ActionResult MyAction(Session s)
{
var param1 = session["VAR1"];
var param2 = session["VAR2"];
return new CustomActionsRunner().MyAction(param1, param2);
}
</code>
其中CustomActionRunner只是一个封装从自定义操作调用的方法的类:
<code>public class CustomActionRunner
{
public ActionResult MyAction(string s1, string s2)
{
// here comes all the logic of your CA
return ActionResult.Success;
}
}
</code>
因此,您可以专注于单元测试CustomActionRunner,它不依赖于某些特定对象,如Session,这些对象难以模拟.希望你明白这个主意.
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!