代码之家  ›  专栏  ›  技术社区  ›  TheColonel26

如何使用xunit assert.raisesany?

  •  0
  • TheColonel26  · 技术社区  · 7 年前

    如何使用xunit assert.raisesany()?我似乎找不到任何例子。

    我收到以下语法错误

    事件“imqtserver.started”只能出现在左侧 +=或-=

    这是有意义的,因为我没有订阅它,但我不知道要对raisesany()使用什么语法

    基本上,我只是想检查代理是否启动了,至少有1个客户机连接到它,它是否停止了。

    p.s.mqttserver是一个mqtt代理实现,它是 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 回复  |  直到 7 年前
        1
  •  1
  •   Jeroen    7 年前

    基于 the source for 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);
    }