Можно ли использовать Строковый Алгоритм Повышения? http://www.boost.org/doc/libs/1_35_0/doc/html/string_algo/usage.html#id1290573
erase_all(str, " ");
В MSDN есть этот пример, который показывает , как реализовать шаблон локатора службы с Unity . По сути, вы должны передать объект локатора службы в качестве аргумента конструктора вашего класса. Это позволяет вам пройти MockUnityResolver
, что позволит вам получить полный контроль над модульным тестом.
[TestMethod]
public void InitCallsRunOnNewsController()
{
MockUnityResolver container = new MockUnityResolver();
var controller = new MockNewsController();
container.Bag.Add(typeof(INewsController), controller);
var newsModule = new NewsModule(container);
newsModule.Initialize();
Assert.IsTrue(controller.RunCalled);
}
Вы могли бы использовать инъекцию бедняка. Создайте конструктор по умолчанию, который извлекает зависимости из локатора служб и перенаправляет эти зависимости «реальному» конструктору, который принимает их как параметры. Это позаботится о производственных ситуациях.
Затем при тестировании рассматриваемого класса передайте фиктивную / фиктивную версию зависимостей в «настоящий» конструктор, полностью обойдя конструктор по умолчанию.
Are you testing your core "DI integration" code? If not, your normal code should never (well, rarely) be interacting with your DI framework.
Normally your dependencies will be injected via constructor injection, and when testing, you can instead supply mock objects as those constructor dependencies. For example:
public class Foo {
public Foo (IBar bar) {
bar.Lift ();
}
}
With the above code, you can simply mock IBar, and pass it to the Foo constructor.