Как использовать xUnit Assert.RaisesAny? - PullRequest
0 голосов
/ 10 января 2019

Как мне использовать xUnit Assert.RaisesAny ()? Кажется, я не могу найти никаких примеров.

Я получил следующую синтаксическую ошибку

Событие 'IMqttServer.Started' может появляться только на левой стороне из + = или - =

Это имеет смысл, так как я не подписываюсь на него, но я не знаю, какой синтаксис использовать с RaisesAny ()

По сути, я просто пытаюсь проверить, запущен ли брокер, подключен ли к нему хотя бы один клиент и что он остановился.

P.S. MqttServer - это реализация Mqtt Broker, которая является частью MqttNet

вот мой тест

public class ResearchTestingOnly
{

    private readonly ITestOutputHelper output;

    public ResearchTestingOnly(ITestOutputHelper output)
    {
        this.output = output;
    }


    [Fact]
    public void Test1()
    {

        IMqttServer _mqttBroker = new MqttFactory().CreateMqttServer();

        var receivedEvents = new List<string>();

        _mqttBroker.ClientConnected += delegate (object sender, MqttClientConnectedEventArgs args)
        {
            receivedEvents.Add(args.ClientId);
        };

        Assert.RaisesAny<EventHandler>(_mqttBroker.Started);

        Assert.RaisesAny<MqttClientConnectedEventArgs>(_mqttBroker.ClientConnected);

        Assert.RaisesAny<EventHandler>(_mqttBroker.Stopped);

        //** Start Broker
        Task _brokerTask = Task.Run(() => _mqttBroker.StartAsync(new MqttServerOptions()));

        //** Wait 10 Seconds
        var pause = new ManualResetEvent(false);
        pause.WaitOne(10000);

        //** Stop Broker
        Task _brokerStopTask = Task.Run(() => _mqttBroker.StopAsync());

        //** Wait for Broker Tasks to Complete
        Task.WaitAll(_brokerTask, _brokerStopTask);

        output.WriteLine($"Number of Clients Connected: {receivedEvents.Count}");
        foreach(var b in receivedEvents)
        {
            output.WriteLine(b);
        }
    }
}

1 Ответ

0 голосов
/ 10 января 2019

На основе источника для EventAssertsTests (заменено x на _mqttBroker):

[Fact]
public static void GotExpectedEvent()
{
    var evt = Assert.RaisesAnyAsync<EventArgs>(
        h => _mqttBroker.Started += h,
        h => _mqttBroker.Started -= h,
        () => Task.Run(() => _mqttBroker.StartAsync(new MqttServerOptions())));

    Assert.NotNull(evt);
    Assert.Equal(_mqttBroker, evt.Sender);
    Assert.Equal(EventArgs.Empty, evt.Arguments);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...