How to throw a SqlException when needed for mocking and unit testing?

前端 未结 14 1705
孤街浪徒
孤街浪徒 2020-12-05 01:28

I am trying to test some exceptions in my project and one of the Exceptions I catch is SQlException.

It seems that you can\'t go new SqlException(

14条回答
  •  我在风中等你
    2020-12-05 02:25

    This should work:

    SqlConnection bogusConn = 
        new SqlConnection("Data Source=myServerAddress;Initial
        Catalog=myDataBase;User Id=myUsername;Password=myPassword;");
    bogusConn.Open();
    

    That takes a bit before it throws the exception, so I think this would work even faster:

    SqlCommand bogusCommand = new SqlCommand();
    bogusCommand.ExecuteScalar();
    

    Code brought to you by Hacks-R-Us.

    Update: nope, the second approach throws an ArgumentException, not a SqlException.

    Update 2: this works much faster (the SqlException is thrown in less than a second):

    SqlConnection bogusConn = new SqlConnection("Data Source=localhost;Initial
        Catalog=myDataBase;User Id=myUsername;Password=myPassword;Connection
        Timeout=1");
    bogusConn.Open();
    

提交回复
热议问题