Veritabanı işlemleriyle dalga geçmeye çalışıyorum. SqlParameterCollection
alayında sorun yaşıyorum. DbParameterCollection
döndürecek virtual
yöntemi oluşturmaya çalıştım ama SqlParameterCollection
AddWithValue
vb gibi tüm işlevlerini kaybediyorum vb SqlParameterCollection
alay edebilirim bir yolu var mı? DAL birim testine başka bir yaklaşım var mı? Ben Moq kullanıyorum.SqlParameterCollection öğesini Moq ile eşleştirin
Kod şöyledir: DALde
:
protected virtual IDbConnection GetConnection(string connectionString)
{
return new SqlConnection(connectionString);
}
protected virtual IDbCommand GetCommand(IDbConnection cn)
{
return cn.CreateCommand();
}
protected virtual IDbTransaction GetTransaction(IDbConnection cn)
{
return cn.BeginTransaction(IsolationLevel.Serializable);
}
Public Bool InsertInDatabase(DataTable dt)
{
using (IDbConnection cn = GetConnection(cnstr))
{
cn.Open();
using (IDbTransaction tran = GetTransaction(cn))
{
IDbCommand cmd = GetCommand(cn);
cmd.Transaction = tran;
cmd.Connection = cn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_InsertInDatabase";
SqlParameterCollection cmdParams = cmd.Parameters as SqlParameterCollection;
cmdParams.AddWithValue("@param1", dt);
cmd.ExecuteNonQuery();
}
}
}
Birim testi projede: bir uzantısı yöntemi düzenlendi
protected override IDbConnection GetConnection(string connectionString)
{
return Mock.Of<IDbConnection>();
}
protected override IDbCommand GetCommand(IDbConnection cn)
{
return Mock.Of<IDbCommand>();
}
protected override IDbTransaction GetTransaction(IDbConnection cn)
{
return Mock.Of<IDbTransaction>();
}
public void TestInsertInDatabase()
{
base.InsertInDatabase(new DataTable());
}
--Solution--
eklemek değeri olan parametre. Bana bu yöne işaret ettiğin için teşekkürler Marc Gravell.
public static IDbDataParameter AddParameterWithValue(this IDbCommand cmd, string paramName, object paramValue)
{
var dbParam = cmd.CreateParameter();
if (dbParam != null)
{
dbParam.ParameterName = paramName;
dbParam.Value = paramValue;
}
return dbParam;
}
Yeni oluşturulan parametre ile .Parameters.Add aramak istersin olur Metot ekle –