use*_*187 5 c# windows-installer unit-testing custom-action wix
我正在使用 C#。我创建了一个 Wix 安装程序和一个自定义操作来支持 wix 安装程序。现在我正在尝试创建一个仅对 CustomAction 进行单元测试,而没有 LUX。
我尝试了许多不同的方式,但我无法模拟 Microsoft.Deployment.WindowsInstaller 会话。任何想法或指针。我正在使用最小起订量。
它并不漂亮,但我为会话创建了一个简单的包装器。就像是:
public class MockSession
{
private readonly Session _session = null;
private readonly Dictionary<string, string> _properties;
public MockSession()
{
_properties = new Dictionary<string, string>();
}
public MockSession(Session session)
{
_session = session;
}
public string this[string property]
{
get
{
if (_session)
return _session[property];
else
return _properties[property];
}
set
{
if (_session)
_session[property] = value;
else
_properties[property] = value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
每个 CustomAction 方法都是一个包装会话的存根:
[CustomAction]
public static ActionResult Method(Session session)
{
var mockSession = new MockSession(session);
return MethodMock(mockSession);
}
public static ActionResult MethodMock(MockSession session)
{
// ... The real work here is testable
}
Run Code Online (Sandbox Code Playgroud)
不理想,但在紧要关头它可以工作。