Метод выполнить не существует в IDbConnection/SqlConnection. Поэтому я предполагаю, что вы создали пользовательский интерфейс и класс.
Правильный способ проверить свой код, чтобы изменить код в «код, который разработан, чтобы быть проверяемым»:
public class A
{
public IDbConnection _dbConnection;
public A() : this(new SqlConnection()){}
public A(IDbConnection connection)
{
_dbConnection = connection;
}
}
Теперь вы можете вводить свое поддельное соединение:
[TestMethod]
public void TestMethod1()
{
StubIDbConnection stubIDbConnection = new StubIDbConnection();
stubIDbConnection.Execute =(null) => -1;
var a = new classA(stubIDbConnection);
int answer = a.ExecuteNoneQuery(null);
Assert.AreEqual(-1,-1);
}
If вы не хотите менять свой код. Вы должны создать shim, а затем изменить метод испытания:
[TestMethod]
public void TestMethod1()
{
using (ShimsContext.Create())
{
System.Data.SqlClient.Fakes.ShimSqlConnection.AllInstances.Execute =
(connection, command) =>
{
if (command != null)
throw new Exception("command is not null");
return -1;
};
var a = new classA();
int answer = a.ExecuteNoneQuery(null);
Assert.AreEqual(-1, -1);
}
}
Редактировать
Проблема вы столкнулись произошло потому, что Execute метод имеет несколько перегруженных.
Измените свой метод испытания на:
[TestMethod]
public void TestMethod1()
{
using (ShimsContext.Create())
{
Dapper.Fakes.ShimSqlMapper.ExecuteIDbConnectionCommandDefinition =
(connection, command) =>
{
//add here params verification...
return -1;
};
var a = new A();
int answer = a.ExecuteNoneQuery(new CommandDefinition());
Assert.AreEqual(-1, answer);
}
}
Я использую Dapper (сторонняя библиотека) для выполнения моего sql, поэтому я не могу изменять код, Я должен использовать Шим. Ниже мой код, но я получаю ошибку компилятора [Ошибка Невозможно назначить «Выполнить», потому что это «группа методов» \t] в строке № 5 –
1 используя (ShimsContext.Create()) 2 { 4 var shimSqlConnection = new System.Data.SqlClient.Fakes.ShimSqlConnection(); 5 shimSqlConnection.Instance.Execute = (соединение, команда) => 6 { 7 if (command! = Null) 8 throw new Exception («команда не равна нулю»); 10 return -1; 11}; 12} –
@HardikShah Информация об использовании Dapper необходима для поиска решения. Я отредактировал свой ответ ... –