2017-01-29 1 views
3

내 테스트는 많은 리플렉션을 사용합니다.NSubstitute가 MethodInfo의 반환을 조롱 할 수 있습니까?

mock 
.GetType().GetTypeInfo() 
.GetProperty("SomePropertyName") 
.GetValue(mock) 
.Returns(someReturnValue); // NSubstitute does its thing here 

어떻게이 MethodInfo 비슷한 일을합니까 : NSubstitute이 같은 반사 특성 (PropertyInfo)을 조롱 할 수 있습니까? 이 같은

답변

3

뭔가 :

internal class Program 
    { 
    private static void Main() 
    { 
     var mock = Substitute.For<SomeClass>(); 
     var mi = mock.GetType().GetTypeInfo() 
     .GetMethod("SomeMethod", BindingFlags.NonPublic | BindingFlags.Instance); 

     mi.Invoke(mock, null).Returns("xxxxXXX"); 

     Console.WriteLine(mi.Invoke(mock, null)); // -> Write xxxxXXX 
    } 
    } 

    public class SomeClass 
    { 
    protected virtual string SomePropertyName { get; set; } 

    protected virtual string SomeMethod() => "aaa"; 
    } 
관련 문제