在ApprovalTests中控制WpfApprovals中的命名器

时间:2013-11-18 23:40:17

标签: approval-tests

我遇到了在不同版本的操作系统上使用WpfApprovals的问题。我的个人笔记本电脑运行的是Windows 7 Enterprise,而构建服务器运行的是Windows 7专业版。由于WpfApprovals在批准文件名中使用操作系统名称,因此构建服务器上的测试失败。

我尝试了许多选项以避免在批准名称中包含操作系统,但是,看起来这种行为在WpfApprovals.cs中是硬编码的......

    public static void Verify(Control control)
    {
        ApprovalResults.UniqueForOs();
        ApprovalTests.Approvals.Verify(new ImageWriter(f => WpfUtils.ScreenCapture(control, f)));
    }

...如果没有创建注释了ApprovalResults.UniqueForOs()调用的库的修改版本,是否有办法在批准文件名中禁用OS信息?

虽然我可以理解这些测试会因不同的主要操作系统版本而失败,但它们不应该在不同的版本中失败。我注意到标准字符串验证程序不强制使用UniqueForOs样式命名。

1 个答案:

答案 0 :(得分:2)

好点。

这个Wpf有点棘手,因为一致性总是一个问题,但强制它可能不是最好的主意,尤其是无法覆盖默认行为。虽然我们找到了下一版本的正确解决方案,但这里有一些3.0.5的解决方法

1)复制文件
您只需复制批准的文件即可匹配两个操作系统版本。这很糟糕但不涉及编码。

2)自定义Wpf呼叫
虽然你说这不是一个很容易解决的问题

public static void Verify(Control control)
{
    ApprovalTests.Approvals.Verify(new ImageWriter(f => WpfUtils.ScreenCapture(control, f)));
}

不幸的是这就是它。没有办法拦截这个名字。

感谢您提请我们注意!