2017-10-13 15 views
0

을 던지는 때이 나는 가짜 좋아 다음 interface :CouldNotSetReturnDueToNoLastCallException 예외

public interface ElementSettings 
{ 
    ValueFormatter Formatter { get; } 

    IEnumerable<ValidationRule> GetValidationRules(); 
} 

나는 Formatter가 입수 될 때, 예외를 발생하고 싶습니다. 나는 그에게 다음과 같은 방법으로 시도 :

var settings = Substitute.For<ElementSettings>(); 
var exception = new ArgumentException("alidsfjmlisa"); 
settings.When(s => { var tmp = s.Formatter; }).Throws(exception); 

을하지만 코드의 마지막 줄에 allways CouldNotSetReturnDueToNoLastCallException를 얻을. 예외 메시지에서 모든 힌트를 읽었지만 오용을 찾을 수 없습니다.

답변

1

스택 추적을 포함한 예외 출력을 게시 할 수 있습니까? 다음 시험이 통과됩니다 :

public class ValueFormatter { } 
    public class ValidationRule { } 

    public interface ElementSettings 
    { 
     ValueFormatter Formatter { get; } 
     IEnumerable<ValidationRule> GetValidationRules(); 
    } 

    [Test] 
    public void Sample() 
    { 
     var sub = Substitute.For<ElementSettings>(); 
     var exception = new ArgumentException("alidsfjmlisa"); 
     sub.When(x => { var tmp = x.Formatter; }).Throw(exception); 
     Assert.Throws<ArgumentException>(() => 
     { 
      var tmp = sub.Formatter; 
     }); 
    } 
+1

때로는 작은 글자가 차이를 만듭니다. 보시다시피, 나는's'가 아닌'Throw' 대신에 NUnit 프레임 워크의 확장 메소드'Throws'를 사용했습니다. 그건 물론 작동하지 않습니다. 당신의 도움을 주셔서 감사합니다. – scher