Я пишу клиенту, который каждую секунду посылает серверу «сигнал сердцебиения».Клиент вызывает службу WCF в фоновом потоке, чтобы сообщить о своей активности.
Как выполнить модульное тестирование?Нужно ли подождать пару секунд и проверить, не вызывался ли соответствующий метод несколько раз?
Должен ли это быть какой-то сценарий теста вместо этого?Может быть, мне не стоит беспокоиться о непрерывном вызове службы в течение всего жизненного цикла клиентов?
Я могу проверить один вызов службы WCF, но она не проверяет «шаблон пульса».
Я использую подход TDD.(C #, NUnit, Moq)
Любые предложения или примеры?
РЕДАКТИРОВАТЬ:
Я думаю, это не было достаточно ясно.
Это гораздо более простая версия того, что у меня есть:
public class FeedService
{
private Timer t;
public FeedService()
{
t.Interval = 1000;
t.Elapsed += TimerElapsed;
t.Start();
}
private void TimerElapsed(object sender, ElapsedEventArgs e)
{
t.Stop();
SendHeartbeat();
t.Start();
}
}
... и это мой тест:
[Test]
public void Heartbeat_called_twice_after_2_seconds()
{
var mockFeedService = new Mock<FeedService>();
Thread.Sleep(2000);
mockFeedService.Verify(x => x.SendHeartBeat(), Times.AtLeast(2));
}
У меня есть два вопроса:
1) Почему мой тест всегда терпит неудачу?Что я делаю не так?
2) Стоит ли вообще это проверять?