【发布时间】:2013-12-03 10:27:44
【问题描述】:
我已将问题分解为一个示例。 处理器执行异步操作并通过 Rx observable 发布结果。
public class Tests
{
[Test]
public async Task Receiving_an_async_result_should_succeed()
{
var p = new Processor();
p.Process("message");
var res = await p.Results;
res.Should().NotBeNullOrEmpty();
}
}
public class Processor
{
private readonly ReplaySubject<string> _subject = new ReplaySubject<string>();
public async void Process(string message)
{
try
{
// Fake some async processing here!
var r = await Task.Factory.StartNew(() => message.Reverse().ToString());
_subject.OnNext(r);
}
catch (Exception e)
{
_subject.OnError(e);
}
}
public IObservable<string> Results { get { return _subject; } }
}
这里的问题是我不知道如何正确设置测试用例。看来期待的结果永远不会到来!
【问题讨论】:
-
Process 和 REsults 不相关,为什么您期望 PRocess 完成后,reuslts 也应该完成?
标签: c# asynchronous system.reactive reactive-programming observable