나는 매초 서버에 "하트 비트 신호"를 보내는 클라이언트를 작성하고 있습니다. 클라이언트는 백그라운드 스레드에서 WCF 서비스를 호출하여 해당 활동을보고합니다.하트 비트 패턴을 단위 테스트하는 방법?
단위 테스트 방법이 방법은? 몇 초 기다렸다가 적절한 방법이 여러 번 호출되었는지 확인해야합니까?
대신 시나리오 테스트일까요? 어쩌면 나는 전체 고객의 평생주기를 통해 지속적으로 서비스를 호출하는 것에 대해 걱정하지 않아도 될까요?
WCF 서비스에 대한 단일 호출을 테스트 할 수 있지만 "하트 비트 패턴"은 테스트하지 않습니다.
TDD 방식을 사용하고 있습니다. (C#, NUnit, Moq)
어떤 제안이나 예가 있습니까?
편집 : 나는 충분히 명확하지 생각
. 나는 두 가지 질문이
[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));
}
:
이 내가 가진 무엇을 훨씬 간단 버전 :
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();
}
}
...이 내 테스트입니다
1) 왜 내 시험은 항상 실패합니까? 내가 뭘 잘못하고 있니?
2) 전혀 테스트해야합니까?
많은 감사. WCF 서비스가 메시지를 받는지는별로 신경 쓰지 않습니다. 내가 테스트해야 할 것은 오류를받지 않고 매 초마다 메시지를 보낸 내 클라이언트의 능력입니다. 나는 모의 서비스 (mock service)를 사용하여 WCF 서비스에 대한 '수동'호출을 테스트했지만 이것이 성취하고자하는 것은 아닙니다. "SendHeartbeat"메서드는 private이어야하며 TimerElapsed에서 호출되어야합니다. – Novitzky