簡體   English   中英

如何在ASP.Net中對事件進行單元測試?

[英]How should events be unit tested in 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 您需要測試在滿足某些條件時引發事件,否則,不應引發該事件。

要做到這一點,我使用這個框架(我總是在我的測試中使用FluentAssertions ,這個framewrok可以用於任何測試引擎,如MSTest,NUnit,MSpec,XUnit等

測試看起來像:

[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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM