私は自分のアプリケーションとmongoデータベースの間にサービスレイヤーを持っています。MongoDBサービス層をテストするためにmoqを使用するにはどうすればよいですか?
私はmoqを使って単体テストを構築しようとしています 私はmoqを初めて使っていますので、私は思ったものから始めました。テストへ
コード:
public List<BsonDocument> GetAllSettings()
{
var collection = MongoDatabase.GetCollection<BsonDocument>("Settings");
var query = from e in collection.AsQueryable()
select e;
var settings = query.ToList();
return settings;
}
:
[Test()]
public void GetAllSettingsTest()
{
//Arrange
BsonDocument doc01 = new BsonDocument();
BsonDocument doc02 = new BsonDocument();
var mongoDatabase = new Mock<MongoDatabase>();
var collection = new Mock<MongoCollection<BsonDocument>>();
mongoDatabase.Setup(f => f.GetCollection(MongoCollection.Settings)).Returns(collection.Object);
collection.Object.Insert(doc01);
collection.Object.Insert(doc02);
ILogger logger = new Logger();
DatabaseClient.DatabaseClient target = new DatabaseClient.DatabaseClient(logger);
target.MongoDatabase = mongoDatabase.Object;
MongoCursor<BsonDocument> cursor = collection.Object.FindAllAs<BsonDocument>();
List<BsonDocument> expected = cursor.ToList();
List<BsonDocument> actual;
//Act
actual = target.GetAllSettings();
//Assert
Assert.AreEqual(expected, actual);
}
I: 設定コレクション あるMongoDatabaseは、私は私のテストとしてこれを試してみたMongoDBDriver.MongoDatabase
です「パラメータのないコンストラクタを見つけることができませんでした」というエラーが発生しました:
mongoDatabase.Setup(f => f.GetCollection(MongoCollections.Settings))。戻り値(collection.Object);
エラーは、MongoCollectionオブジェクトを参照しています。私はそれがコンストラクタを持っていたとは思わなかった。
テストを実行するにはどうすればよいですか?
ドントモック、 'var collection = new Mock>();'と試してみてください –
申し訳ありませんが、私はあなたが示唆していることを理解していません。 – Richard210363