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