public async Task OpenAndOpenOnOpening() { var o = new TestCommunicationObject(); o.DoOn("OnOpeningAsync", async co => await co.OpenAsync()); // Calling open is only allowed on a fresh object await o.Invoking(x => x.OpenAsync()) .Should().ThrowAsync <InvalidOperationException>(); }
public async Task OpenAndThrowOnOpening() { var o = new TestCommunicationObject(); o.DoOn("OnOpeningAsync", co => Task.FromException(new TestException())); await o.Invoking(x => x.OpenAsync()) .Should().ThrowAsync <TestException>(); o.State .Should().Be(CommunicationState.Faulted); o.Record .Should().Equal(new string[] { "OnOpeningAsync", "Event_Opening", "OnFaulted", "Event_Faulted", }); }