Я создаю класс, который определяет, какой из числа зарегистрированных обратных вызовов клиента WCF позвонить. Когда клиент регистрируется на сервере, он предоставляет интересующий его токен. Затем класс сохраняет отображение токена в интерфейс IClientCallback для этого токена в словаре.
Метод и его тестируемый класс выглядят следующим образом
public class Router
{
private IDictionary<int, IClientCallBack> clients;
public Router()
{
clients = new Dictionary<int, IClientCallBack>();
}
public Router(IDictionary<int, IClientCallBack> clients)
{
this.clients = clients;
}
public bool Register(int token, IClientCallBack client)
{
if (!clients.ContainsKey(token))
{
clients.Add(token, client);
return true;
}
return false;
}
}
Как проверить, что клиенты успешно зарегистрированы на маршрутизаторе?
Я решил, что могу либо предположить, что если функция вернула true, то она успешна (но что делать, чтобы тело функции не возвращало только «return true;»?) Или я мог бы вставить словарь клиентов в конструктор класса и в мой проверить, что я могу проверить, что клиенты. Количество равно 1, как показано ниже.
[TestMethod]
public void RegisterTest()
{
IDictionary<int, IClientCallBack> clients = new Dictionary<int, IClientCallBack>();
var router = new Router(clients);
var client = new Mock<IClientCallBack>().Object;
var success = router.Register(4, client);
Assert.IsTrue(success);
Assert.AreEqual(1, clients.Count);
Assert.AreEqual(clients[4], client);
}
Несмотря на то, что приведенный выше тест кажется хорошим, кажется чрезмерным использование внедрения зависимостей для вставки коллекции, просто чтобы я мог проверить ее. Однако это делает тестирование намного проще и точнее (при тестировании и других методов класса).
Это рекомендуемый способ проверки этого метода, или это излишне?