Управление Namer в WpfApprovals в тестах на одобрение

У меня возникла проблема с использованием 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 ответ

Хорошая точка зрения.

Этот Wpf немного сложнее, поскольку согласованность всегда является проблемой, но форсирование может быть не лучшей идеей, особенно без возможности переопределить поведение по умолчанию. Хотя мы выясним правильное решение для следующей версии, вот несколько обходных решений для 3.0.5

1) Копировать файл Вы можете просто скопировать одобренный файл в соответствии с обеими версиями ОС. Это отстой, но не требует кодирования.

2) Индивидуальный вызов Wpf Хотя вы заявили, что не делаете этого, это довольно легко исправить

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

К сожалению, это все. Невозможно перехватить наем.

Спасибо, что привлекли наше внимание!

licensed under cc by-sa 3.0 with attribution.