は、ここではサンプルの方法である:ユニットテストMongoWriteExceptions
private void Update()
{
try
{
var find = Builders<Filter>.Filter.Eq(e => e.Id, "someId");
var update = Builders<Filter>.Update.Set(e => e.SomeValue, "AValue");
_documentStore.MongoCollection<Filter>().UpdateOne(find, update, new UpdateOptions { IsUpsert = true }, CancellationToken.None);
}
catch (MongoWriteException mongoWriteException)
{
if (mongoWriteException.WriteError.Category != ServerErrorCategory.DuplicateKey)
{
throw;
}
}
}
私はMongoWriteExceptionを模擬することができますどのように誰もが知っていますか?あなたはリフレクションを使用した内部コンストラクタを持つクラスのオブジェクトを作成することができます
var mongoWriteException = new MongoWriteException(new ConnectionId(new ServerId(new ClusterId(1), new DnsEndPoint("d", 2)), 0), new WriteError(), // <- Protected constructor
しかしWriteErrorクラスは、内部コンストラクタ
私はそれほどmongodbに精通していません。どのタイプが '_documentStore'です。私はあなたがドライバにアクセスすることを抽象化する必要があるかもしれないと思うそれはまだではありません。 – Nkosi
ドキュメントストアは単なるファサードです。実際の問題は、例外が発生するのをシミュレートできないという事実です。 –
通常はどこに起こりますか?あなたがモックの1つを呼び出すときにそれを投げるためにmoqを使うことができます。 – Nkosi