>

아래 코드에서 Moq 를 사용하고 있습니다.  샘플 테스트를 작성합니다. Mock Object를 만들었고 SetupProperty 를 사용하고 있습니다.  속성에 대해 가짜 값이 반환되도록 설정합니다. 하지만 _sharedService.VerifyAll() 줄에서 오류가 발생합니다. .

사소한 것이 빠졌지 만 정확히 무엇인지 확실하지 않습니다. 누구든지 도와 주시겠습니까?

[TestFixture]
public class ObjectFactoryTests : TestFixtureBase
{
    private Mock<ISharedService> _sharedService;
    [SetUp]
    public void SetUp()
    {
        _sharedService = new Mock<ISharedService>(MockBehavior.Strict);
    }
    protected override void VerifyAll()
    {
        _sharedService.VerifyAll();
    }
    private IObjectFactory GetObjectFactory()
    {
        return new ObjectFactory(sharedService.Object);
    }
    [Test]
    public void ObjectFactory_GenerateObject_Request_Success()
    {
        MyObject1 request = something;
        var requestData = new Dictionary<string, object>();
        requestData.TryAdd(Cache.Client, Constants.CLIENT);
        _sharedService.SetupProperty(m => m.RequestData, requestData);
        var factory = GetObjectFactory();
        var actual = factory.GenerateObject(request);
        Assert.That(actual.Client, Is.EqualTo(requestData[Cache.Client].ToString()), Constants.CLIENT);
        VerifyAll();
    }
}
public class ObjectFactory : IObjectFactory
{
    ISharedService SharedService = something;
    public MyObject GenerateObject(MyObject1 request)
    {
        MyObject obj = new MyObject(request);
        obj.Client = SharedService.RequestData[Cache.Client].ToString();
        return obj;
    }
}


  • 답변 # 1

    정확하게 이해하면 속성 기대치를 설정하려고합니다.

    _sharedService.SetupProperty(m => m.RequestData, requestData); 대신 다음을 시도하십시오 :

    _sharedService.Setup(foo => foo.RequestData).Returns(requestData);
    
    

    Moq 문서에서 더 많은 정보를 읽을 수 있습니다

  • 답변 # 2

     getter와 setter에 대한 두 가지 설정을 만듭니다. 속성 만 읽는 중이므로 setter의 속성이 일치하지 않으므로 오류가 발생합니다.

    이를 피하려면 SetupProperty 를 사용하십시오.  게터에 대한 설정 만 만들 수 있습니다.

    Btw .: mock.SetupGet(m => m.Property).Returns(() => value)  실제로 당신이 생각하는 것과 다른 목적을 가지고 있습니다 : 그것은 기대를 설정하는데 사용되어서는 안됩니다;대신 속성을 "스텁"하여 마지막으로 설정된 값을 유지하는 데 사용됩니다. 그 SetupProperty 사실  검사에 이러한 스텁 된 속성을 포함하더라도 오류 일 수 있습니다 ( Verify[All] 에서 이미 수정되었습니다) ).

    SetupAllProperties

  • 이전 python - scl enable을 사용하여 dockerfile에서 python3 앱을 실행하는 방법
  • 다음 java - CSR없이 Tomcat에 GoDaddy SSL 인증서를 설치하는 방법은 무엇입니까?