gpt4 book ai didi

c# - 应该如何在 ASP.Net 中对事件进行单元测试?

转载 作者:太空狗 更新时间:2023-10-30 01:22:51 25 4
gpt4 key购买 nike

我已经定义了两个带有自定义事件参数和相关引发方法的事件。现在我想知道应该测试什么以及如何测试事件。我应该如何分析代码以找到单元测试的候选者?

最佳答案

我测试事件的方式如下:

假设这是你的对象:

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 ,这个框架可以与任何测试引擎一起使用,如 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;

关于c# - 应该如何在 ASP.Net 中对事件进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12665159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com