public async Task MyTimeoutClass_SuccessfulGet_ReturnsResult() { var stub = new SuccessHttpServiceStub(); var my = new MyTimeoutClass(stub); var result = await my.GetStringWithTimeout("http://example.com/").SingleAsync(); Assert.AreEqual("stub", result); }
public async Task MyTimeoutClass_FailedGet_PropagatesFailure() { var stub = new SuccessHttpServiceStub(); var my = new MyTimeoutClass(stub); await ThrowsExceptionAsync <HttpRequestException>(async() => { await my.GetStringWithTimeout("http://example.com/").SingleAsync(); }); }
public static void RunOk() { var scheduler = new TestScheduler(); var stub = new SuccessHttpServiceSub(scheduler, TimeSpan.FromSeconds(0.5)); var my = new MyTimeoutClass(stub); string result; my.GetStringWithTimeout("http://www.baidu.com", scheduler).Subscribe(r => { result = r; }); scheduler.Start(); }
public static void ThrowTimeoutException() { var scheduler = new TestScheduler(); var stub = new SuccessHttpServiceSub(scheduler, TimeSpan.FromSeconds(1.5)); var my = new MyTimeoutClass(stub); Exception result; my.GetStringWithTimeout("http://www.baidu.com", scheduler) .Subscribe( _ => Assert.True(false, "Received value"), ex => { result = ex; }); scheduler.Start(); }
public async Task MyTimeoutClass_SuccessfulGet_ReturnsResult() { var scheduler = new TestScheduler(); var stub = new SuccessHttpServiceStub { Scheduler = scheduler, Delay = TimeSpan.FromSeconds(0.5), }; var my = new MyTimeoutClass(stub); //SingleAsync可用来做简单的单元测试,它返回一个Task<T>对象,该对象在下一个事件到达时完成 // var result = await my.GetStringWithTimeout("http://kworb.net/pop/").SingleAsync(); string result = null; my.GetStringWithTimeout("http://kworb.net/pop/", scheduler).Subscribe(r => { result = r; }); scheduler.Start(); Assert.AreEqual("stub", result); }
public void MyTimeoutClass_SuccessfulGetLongDelay_ThrowsTimeoutException() { var scheduler = new TestScheduler(); var stub = new SuccessHttpServiceStub { Scheduler = scheduler, Delay = TimeSpan.FromSeconds(1.5), }; var my = new MyTimeoutClass(stub); Exception result = null; my.GetStringWithTimeout("http://www.example.com/", scheduler) .Subscribe(_ => Assert.Fail("Received value"), ex => { result = ex; }); scheduler.Start(); Assert.IsInstanceOfType(result, typeof(TimeoutException)); }
public void MyTimeoutClass_SuccessfulGetShortDelay_ReturnsResult() { var scheduler = new TestScheduler(); var stub = new SuccessHttpServiceStub { Scheduler = scheduler, Delay = TimeSpan.FromSeconds(0.5), }; var my = new MyTimeoutClass(stub); string result = null; my.GetStringWithTimeout("http://www.example.com/", scheduler) .Subscribe(r => { result = r; }); scheduler.Start(); Assert.AreEqual("stub", result); }
public async Task MyTimeoutClass_FailedGet_PropagatesFailure() { //var stub = new FailureHttpServiceStub(); //var my = new MyTimeoutClass(stub); //await ThrowsExceptionAsync<HttpRequestException>(async () => //{ // await my.GetStringWithTimeout("http://kworb.net/pop/").SingleAsync(); //}); //使用调度器,测试超时的情况就很容易了 var scheduler = new TestScheduler(); var stub = new SuccessHttpServiceStub { Scheduler = scheduler, Delay = TimeSpan.FromSeconds(1.5), }; Exception result = null; var my = new MyTimeoutClass(stub); my.GetStringWithTimeout("http://kworb.net/pop/", scheduler).Subscribe(_ => Assert.Fail("Received value"), ex => { result = ex; }); scheduler.Start(); Assert.IsInstanceOfType(result, typeof(TimeoutException)); }