Я использую некоторую библиотеку COM в своем C#, которая привязана к определенному оборудованию и не работает без него. На компьютере разработки/тестирования у меня нет такого оборудования. Метод, который использует библиотеку выглядит следующим образом:Могу ли я высмеивать объект, который невозможно создать?
using HWSysManagerLib;
bool ProcessBias(HWSysManager systemManager, string hwPath)
{
int handle = systemManager.OpenConfiguration(hwPath);
...
// some magic goes here
// return result
}
вопрос, я могу издеваться HWSysManager
для метода испытаний и как? Существует несколько методов только в HWSysManager
, и было бы нецелесообразно имитировать их функциональность для тестирования. Крошечный пример был бы замечательным в том, как издеваться над этим, если это вообще возможно.
Так что это неизбежно изменить мое приложение. Хотя, как я называю 'ProcessBias' из моего приложения? Прямо сейчас я называю это следующим: 'HWSysManager sm = new HWSysManager(); ProcessBias (sm, ""); ' – Pablo
В основном я должен реализовать все делегаты методов, которые я использовал из этой библиотеки. – Pablo
Вы не должны создавать экземпляр в вызывающем методе. Вместо этого возьмите IHWSysManager из конструктора. В вашей машине разработки задайте класс stub как параметр, а в реальной среде - реальный класс реализации. Этот метод называется Injection Dependency, вы можете прочитать об этом [здесь] (http://stackoverflow.com/questions/130794/what-is-dependency-injection). –