4
나는 커스텀 이벤트 인수와 연관된 레이즈 메소드로 두 개의 이벤트를 정의했다. 이제 이벤트가 어떻게 그리고 어떻게 테스트되어야하는지 궁금합니다. 단위 테스트를위한 후보를 찾기 위해 코드를 어떻게 분석해야합니까?ASP.Net에서 이벤트가 어떻게 테스트되어야합니까?
는 가정이 개체입니다 :
나는 커스텀 이벤트 인수와 연관된 레이즈 메소드로 두 개의 이벤트를 정의했다. 이제 이벤트가 어떻게 그리고 어떻게 테스트되어야하는지 궁금합니다. 단위 테스트를위한 후보를 찾기 위해 코드를 어떻게 분석해야합니까?ASP.Net에서 이벤트가 어떻게 테스트되어야합니까?
는 가정이 개체입니다 :
내가 이벤트를 테스트하는 방법은 다음과 같습니다
public class MyEventRaiser
{
public event EventHandler<string> MyEvent = delegate { };
public void Process(string data)
{
// do something interestuing
Thread.Sleep(2000);
if (!string.IsNullOrEmpty(data))
{
this.MyEvent(this, data + " at: " + DateTime.Now.ToString());
}
}
}
따라서 시험에서 당신의 주제입니다
: MyEventRaiser
하고 방법
Process
을 테스트 할 수 있습니다. 특정 조건이 충족 될 때 이벤트가 발생하는지 테스트해야합니다. 그렇지 않으면 이벤트가 발생하지 않아야합니다.
그것을 위해, 나는이 framewrok이 MSTEST, NUnit과, MSpec, xUnit의 같은 모든 테스트 엔진을 사용할 수있는 등, FluentAssertions (내 테스트에서 항상 를 사용하는 것이)이 프레임 워크를 사용
테스트는 다음과 같은 네임 스페이스를 사용할 필요가
[TestClass]
public class CustomEventsTests
{
[TestMethod]
public void my_event_should_be_raised()
{
var sut = new MyEventRaiser();
sut.MonitorEvents();
sut.Process("Hello");
sut.ShouldRaise("MyEvent").WithSender(sut);
}
[TestMethod]
public void my_event_should_not_be_raised()
{
var sut = new MyEventRaiser();
sut.MonitorEvents();
sut.Process(null);
sut.ShouldNotRaise("MyEvent");
}
}
: 같이
using FluentAssertions;
using FluentAssertions.EventMonitoring;
덕분에, FluentAssertions 멋지다 –