Мне интересно, есть ли альтернативная lib для функции прокладки, предусмотренная в фальшивой среде Microsoft, поскольку она поддерживается только в окончательной версии?
Любая альтернатива функции прокладки, предусмотренная в поддельной системе Microsoft?
Ответ 1
Насколько мне известно, есть три структуры, которые позволяют вам высмеивать не виртуальные методы и запечатанные классы, такие как Fakes 'Shims. Есть
Все они коммерческие, потому что они используют API профилирования, которое очень волосатое и плохо документировано, поэтому его кодирование - настоящая боль.
И для протокола, я все для подделок. Большая часть кода, над которым работают люди, является устаревшим кодом. Одно из правил рефакторинга Pragmatic Programmer - убедитесь, что у вас есть покрытие модульных тестов перед любым рефакторингом, чтобы избежать регрессии. Это делает подделки и подобные фреймворки очень полезными, особенно когда устаревший код не был написан для тестирования.
Ответ 2
Prig не был обновлен для работы с VS 2017, но Pose делает, и работает очень хорошо для того, для чего он мне нужен (базовое шиммирование Environment.UserName
, DateTime.Now
и тому подобное), и имеет действительно хороший интерфейс:
// Create shims. They only apply within this isolate block.
var dateTimeShim = Shim.Replace(() => DateTime.Now)
.With(() => new DateTime(2010, 1, 1));
var usernameShim = Shim.Replace(() => Environment.UserName)
.With(() => "john.wick");
// Shims are only active within an Isolate block - and you
// have to pass all shims you want to be active.
PoseContext.Isolate(() =>
{
// Run your test - shims are active at this point.
RunTest();
}, dateTimeShim, usernameShim);
РЕДАКТИРОВАТЬ
Я должен отметить, что я получаю много ошибок при выполнении довольно простых тестов - действительно страшных ошибок, таких как "Common Language Runtime обнаружил недопустимую программу" и "JIT Compiler обнаружил внутреннее ограничение". так будьте бдительны.
Ответ 3
Альтернатива с открытым исходным кодом - Prig. MIT лицензирован и по-прежнему активен, но немного отстает от VS IDE
Ответ 4
Да и для подробного сравнения смотрите здесь:
Как вы узнаете из ответа Джима Купера, сборники Fake на самом деле плохо, и есть намного лучшие альтернативы, например. которые поддерживают рефакторинг и требуют меньше кода (используйте generics).