public async Task Can_receive_from_subject_of_string()
{
TestProbe target = CreateTestProbe("Probe1");
ISubject<string> subject = await Sys.Reactive().CreateSubjectAsync<string>(target);
List<string> responses = new List<string>();
AutoResetEvent receivedResponse = new AutoResetEvent(false);
subject.Subscribe(message =>
{
responses.Add(message);
receivedResponse.Set();
});
subject.OnNext("Hello");
Within(TimeSpan.FromSeconds(2), () =>
{
target.ExpectMsg<string>(message =>
{
Assert.Equal("Hello", message);
target.Reply("World");
});
});
Assert.True(
receivedResponse.WaitOne(
TimeSpan.FromSeconds(2)
),
"Timed out waiting for response message."
);
Assert.Equal(1, responses.Count);
Assert.Equal("World", responses[0]);
}
}