如何使用FtpWebResponse创建WebException以进行测试?

我正在使用FtpWebRequest和一个暂态故障处理应用程序块。对于我的错误处理程序,我有一个错误检测策略,该策略检查响应是否被认为是瞬态的,以便它知道是否重试:

public bool IsTransient(Exception ex)
    {

        var isTransient = false;
        //will be false if the exception is not a web exception.
        var webEx = ex as WebException;

        //happens when receiving a protocol error.
        //This protocol error wraps the inner exception, e.g. a 401 access denied.
        if (webEx != null && webEx.Status == WebExceptionStatus.ProtocolError)
        {
            var response = webEx.Response as FtpWebResponse;
            if (response != null && (int)response.StatusCode < 400)
            {
                isTransient = true;
            }
        }
        // if it is a web exception but not a protocol error,
        // check the status code.
        else if (webEx != null)
        {
            //(check for transient error statuses here...)
            isTransient = true;
        }

        return isTransient;
    }

我正在尝试编写一些测试来检查是否将适当的错误标记为暂时错误,但是我无法创建或模拟具有FtpWebResponse的内部异常的Web异常(因此以下响应为“ t始终为null)

var response = webEx.Response as FtpWebResponse;

有人知道我该怎么做吗?我会以正确的方式进行操作吗?

usr

使用适当的构造函数WebException来设置响应:

public WebException(
 string message,
 Exception innerException,
 WebExceptionStatus status,
 WebResponse response)

使用FtpWebResponse设置异常是我遇到的麻烦... FtpWebResponse具有我无法访问的内部构造函数。

BCL并非真正用于测试,因为该概念在编写时并不大。您必须使用反射调用该内部构造函数(使用反编译器查看可用的内容)。或者,使用自定义可模拟类包装所需的所有System.Net类。不过,这似乎需要大量工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用FtpWebResponse获取文件的大小

来自分类Dev

C#如何使用响应状态代码创建WebException

来自分类Dev

C#如何使用响应状态代码创建WebException

来自分类Dev

如何使用动态创建的控件进行自动化测试?

来自分类Dev

如何使用内部对象创建进行JUnit测试

来自分类Dev

Ruby,如何创建Rack :: Request进行测试?

来自分类Dev

Ruby,如何创建Rack :: Request进行测试?

来自分类Dev

测试-如何进行创建新数据的集成测试

来自分类Dev

如何对使用Entity Framework创建对象的存储库层方法进行单元测试?

来自分类Dev

如何使用decimal.MaxValue进行测试?

来自分类Dev

如何使用MRUnit Test进行Mapper测试?

来自分类Dev

如何使用依赖注入进行测试?

来自分类Dev

如何使用Espresso在Android上进行测试?

来自分类Dev

如何使用Caliper进行基准测试?

来自分类Dev

如何对函数的内存使用进行基准测试?

来自分类Dev

如何使用内联文档进行rust测试

来自分类Dev

如何逐步使用Jmeter进行压力测试

来自分类Dev

如何使用mockito进行整数测试

来自分类Dev

如何创建一个ActiveRecord :: RecordInvalid进行测试?

来自分类Dev

如何在Elm中创建字典进行测试?

来自分类常见问题

如何使用Go中的测试包进行测试设置

来自分类Dev

如何使用GDB创建测试脚本

来自分类Dev

如何使用makefile创建测试结果

来自分类Dev

无法通过rspec创建使用水豚进行测试的用户

来自分类Dev

使用自定义值创建CLPlacemark进行测试

来自分类Dev

如何创建使用JavaScript进行修改的书签

来自分类Dev

使用带有真实(实时)创建的条带令牌的Stripe的测试帐户进行测试

来自分类Dev

PostgreSQL 的 initdb 是如何工作的?如何使用它进行测试?

来自分类Dev

如何使用mocha使用'done();'进行异步测试?

Related 相关文章

  1. 1

    如何使用FtpWebResponse获取文件的大小

  2. 2

    C#如何使用响应状态代码创建WebException

  3. 3

    C#如何使用响应状态代码创建WebException

  4. 4

    如何使用动态创建的控件进行自动化测试?

  5. 5

    如何使用内部对象创建进行JUnit测试

  6. 6

    Ruby,如何创建Rack :: Request进行测试?

  7. 7

    Ruby,如何创建Rack :: Request进行测试?

  8. 8

    测试-如何进行创建新数据的集成测试

  9. 9

    如何对使用Entity Framework创建对象的存储库层方法进行单元测试?

  10. 10

    如何使用decimal.MaxValue进行测试?

  11. 11

    如何使用MRUnit Test进行Mapper测试?

  12. 12

    如何使用依赖注入进行测试?

  13. 13

    如何使用Espresso在Android上进行测试?

  14. 14

    如何使用Caliper进行基准测试?

  15. 15

    如何对函数的内存使用进行基准测试?

  16. 16

    如何使用内联文档进行rust测试

  17. 17

    如何逐步使用Jmeter进行压力测试

  18. 18

    如何使用mockito进行整数测试

  19. 19

    如何创建一个ActiveRecord :: RecordInvalid进行测试?

  20. 20

    如何在Elm中创建字典进行测试?

  21. 21

    如何使用Go中的测试包进行测试设置

  22. 22

    如何使用GDB创建测试脚本

  23. 23

    如何使用makefile创建测试结果

  24. 24

    无法通过rspec创建使用水豚进行测试的用户

  25. 25

    使用自定义值创建CLPlacemark进行测试

  26. 26

    如何创建使用JavaScript进行修改的书签

  27. 27

    使用带有真实(实时)创建的条带令牌的Stripe的测试帐户进行测试

  28. 28

    PostgreSQL 的 initdb 是如何工作的?如何使用它进行测试?

  29. 29

    如何使用mocha使用'done();'进行异步测试?

热门标签

归档