mock을 사용하여 색인 속성이 설정되었는지 확인하려고합니다.Moq 방법 색인 된 속성 설정
public class Index
{
IDictionary<object ,object> _backingField
= new Dictionary<object, object>();
public virtual object this[object key]
{
get { return _backingField[key]; }
set { _backingField[key] = value; }
}
}
먼저, Setup()
를 사용하여 시도 : 다음은 인덱스와 MOQ-수있는 개체의
[Test]
public void MoqUsingSetup()
{
//arrange
var index = new Mock<Index>();
index.Setup(o => o["Key"]).Verifiable();
// act
index.Object["Key"] = "Value";
//assert
index.Verify();
}
을 ... 실패 - 그것은 그래서 get{}
에 대해 확인해야한다, 나는 시도 SetupSet()
:
[Test]
public void MoqUsingSetupSet()
{
//arrange
var index = new Mock<Index>();
index.SetupSet(o => o["Key"]).Verifiable();
}
... 예외 :
System.ArgumentException : Expression is not a property access: o => o["Key"]
at Moq.ExpressionExtensions.ToPropertyInfo(LambdaExpression expression)
at Moq.Mock.SetupSet(Mock mock, Expression`1 expression)
at Moq.MockExtensions.SetupSet(Mock`1 mock, Expression`1 expression)
이 작업을 수행하는 올바른 방법은 무엇입니까?
왜이 경우 조롱을 사용 하시겠습니까? 당신이 테스트하려고하는 것은 무엇입니까? 왜 Index 클래스를 직접 테스트하지 않겠습니까? –
그것은 내가 모의하고 정말로 원하는 인덱스 속성을 가진 인터페이스입니다. 질문을 단순화하기 위해 가상 속성이있는 구체적인 개체를 사용하도록 요청했습니다. –
확인. 더 의미가 있습니다 :-) –