0
私はこのコードを持っており、opts.Items["foo"]
が正しく設定されているかどうかテストしたいと思っています。正しい動作オプションでAutoMapperが呼び出されたことをテストするテストを書く方法
public Result DoStuff(MyInput myObj)
{
var mapped = _mapper.Map<Result>(myObj,
opts =>
{
opts.Items["foo"] = "bar";
});
return mapped;
}
そして、私のテストは、この
public void MapperShouldBeCalledWithCorrectOperationItems()
{
// Arrange
var optObj = Substitute.For<IMappingOperationOptions>();
Action<IMappingOperationOptions> argumentUsed = null;
_mapper.Received().Map<Result>(result, Arg.Do<Action<IMappingOperationOptions>>(arg => argumentUsed = arg));
// Act
_uut.DoStuff(new MyInput());
argumentUsed.Invoke(optObj);
// Assert
optObj.Items["foo"].Should().Be("bar");
}
のように見える今、これは動作しませんし、私は正しい道によさえわからない:(
私はしないでください私は、私が代わりにIMappingOperationOptions
がItems["foo"]
セットを持っていることを確認する必要がラムダを検査することができると思います。
任意の提案ですか?
テストする方法はどのように見えますか?あなたの最初のコードはメソッドではなく、コードのブロックであることを意味します。 – Evk
@Evkは投稿を編集しました。うまくいけばそれはもう少し明確になります –
しかし、あなたは置換されたマッパーを '_uut'クラスに渡すことはありません。したがって、通常の '_mapper'を使用します。 – Evk