Je rencontre un problème lorsque moq ou Ploeh.AutoFixture.AutoMoq se moquent de toutes les interfaces enfants quand dans un cas je veux que l'un d'eux soit nul.Arrêter les enfants se moquant de Moq/AutoFixture
J'utilise NPOC et il dispose d'une interface appelée IDatabase
public interface IDatabase : IDatabaseQuery
{
IDbConnection Connection { get; }
IDbTransaction Transaction { get; }
void AbortTransaction();
void BeginTransaction();
void BeginTransaction(IsolationLevel? isolationLevel);
void CompleteTransaction();
IDataParameter CreateParameter();
int Delete(object poco);
int Delete<T>(object pocoOrPrimaryKey);
int Delete<T>(Sql sql);
int Delete<T>(string sql, params object[] args);
int Delete(string tableName, string primaryKeyName, object poco);
int Delete(string tableName, string primaryKeyName, object poco, object primaryKeyValue);
void Dispose();
Transaction GetTransaction();
Transaction GetTransaction(IsolationLevel? isolationLevel);
object Insert(object poco);
object Insert(string tableName, string primaryKeyName, object poco);
object Insert(string tableName, string primaryKeyName, bool autoIncrement, object poco);
void Save(object poco);
void Save(string tableName, string primaryKeyName, object poco);
IDatabase SetTransaction(IDbTransaction tran);
int Update(object poco);
int Update<T>(Sql sql);
int Update(object poco, IEnumerable<string> columns);
int Update(object poco, object primaryKeyValue);
int Update<T>(string sql, params object[] args);
int Update(object poco, object primaryKeyValue, IEnumerable<string> columns);
int Update(string tableName, string primaryKeyName, object poco);
int Update(string tableName, string primaryKeyName, object poco, IEnumerable<string> columns);
int Update(string tableName, string primaryKeyName, object poco, object primaryKeyValue);
int Update(string tableName, string primaryKeyName, object poco, object primaryKeyValue, IEnumerable<string> columns);
}
Je ne veux pas IDbTransaction Transaction { get; }
à moquaient que je veux que ce soit nul, mais il devient moquaient.
J'ai alors aussi un IUnitOfWork qui a l'interface IDatabase dedans.
public interface IUnitOfWork : IDisposable
{
void Commit();
IDatabase Db { get; }
void SetOneTimeCommandTimeout(int timeout);
void SetGlobalCommandTimeout(int timeout);
void BeginTransaction();
}
// Code
fixture = new Fixture().Customize(new AutoMoqCustomization());
fixture.Freeze<Mock<IDatabase>>();
var test = fixture.CreateAnonymous<MyService>();
Depuis la transaction est une propriété en lecture seule, je ne sais pas comment le configurer recommence à zéro.
... C'est .... très .... graisse interface. Vous êtes sûr que vous ne pouvez pas simplifier un peu ce mauvais garçon? –
Pas mon code. C'est de NPoc qu'est-ce qu'un ORM. Donc non, je ne veux vraiment pas le toucher. – chobo2