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();
            });
        }
Пример #3
0
        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();
        }
Пример #4
0
        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();
        }
Пример #5
0
            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);
            }
Пример #6
0
    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));
    }
Пример #7
0
    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);
    }
Пример #8
0
            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));
            }