2014-12-12 2 views
0

AssertManager.Record의 매개 변수가 작동하지만 asserts.So라는 어설 션 유형을 가져올 필요가있는 람다 액션 내부의 값이 필요합니다. 나는 어떤 수업에서 다른 수업으로 넘어 갔다. 어떤 이유로 람다 식을 사용했기 때문에 편집 할 수 없습니다. 나는 그저 어떤 타입의 주장이든지 말한 문자열 타입이 필요하다. 내 예제에서는 콘솔에 "Assert.True"또는 "Assert.Equal"을 출력해야합니다. 매개 변수가 전달 된 람다에 사용 된 메서드 이름을 얻는 방법

는 Heres는 샘플 코드는 내가 사용

public class ClassTest 
{ 
    AssertManager = new AssertManager(); 

    [Fact] 
    public void sampleTestAssert() 
    { 

     AssertManager.Record(() => Assert.True(true)); 
     AssertManager.Record(() => Assert.Equal("Dog","Dog")); 


    } 
} 

public class AssertManager 
{ 
    public void Record(Action testMethod) 
    { 
    //is it possible to use testMethod to get the Assert inside the lambda in the 
    //Output what assert i did (ex. Assert.True, Assert.Equal) 
    } 
} 

는이에 대한 해결책이 있으면 알려 주시기 바랍니다. 고맙습니다.

+0

난 당신이 다른 각도에서 수행하려는 생각에서 오는보기 ... 다음 람다를 반영 할 수있는 대신 ActionExpression<Action>를 사용할 필요가 'Assert.True' 등을 호출하는 코드 행을 변경 하시겠습니까? 그렇다면'Assert' 클래스를 서브 클래스 화하고, 각 메소드 ('True','Equals' 등)를 오버라이드하여 스스로 기록하고, 실제로 어설 션을 수행하도록 기본 클래스를 호출 할 수 있습니까? –

답변