문제

getGlobalresourceobject와 getLocalresourceobjet을 랩핑하는 클래스가있어 MVC에서 쉽게 사용할 수 있습니다. 모델 유효성 검사 클래스는 리소스 파일에서 오류 메시지를 동적으로로드합니다. 문제는 단위 테스트입니다. 코드는 "~/"를 사용하며 솔루션이 실행될 때 모든 것이 올바르게 작동하지만 항상 다음 오류를 받기 때문에 장치 테스트를 수행하는 방법을 알 수 없습니다. '응용 프로그램의 경로는 알려지지 않았기 때문에 절대적으로 만들 수 없습니다. "

예외를 던지는 코드는 표현식을 평가하고 글로벌 리소스 객체를 반환하는 데 사용됩니다.

Private Function GetExpressionFields(ByVal expression As String) As ResourceExpressionFields
    Return GetExpressionFields(expression, "~/")
End Function

Private Function GetExpressionFields(ByVal expression As String, ByVal path As String) As ResourceExpressionFields
    Dim context As New ExpressionBuilderContext(path)
    Dim resource_builder As New ResourceExpressionBuilder()
    Dim fields As ResourceExpressionFields
    fields = DirectCast(resource_builder.ParseExpression(expression, GetType(String), context), ResourceExpressionFields)
    Return fields
End Function

이이 테스트 방법 및 리소스 파일을 사용하는 다른 코드에 대한 아이디어가 있습니까?

도움이 되었습니까?

해결책

나는 약간 다른 접근법을 취했다. APP_* 디렉토리 외부의 리소스 파일을 사용하는데,이 경우 IDE는 파일에 사용자 정의 도구를 추가하여 시야를 포함하여 솔루션의 어느 곳에서나 작동하는 리소스에 대해 강력하게 입력 한 래퍼를 생성하고 단위 테스트 중에 동작합니다. http://odetocode.com/blogs/scott/archive/2009/07/15/13211.aspx

그것은 당신의 질문에 대한 정확한 답이 아니지만, 모든 조건에서 APP_* 리소스를 올바르게 행동하게하는 것이 상당히 많은 일이라고 생각합니다.

다른 팁

ResourceExtensions 클래스 (예 : bool isintestscope)에서 속성을 만들 수 있습니다. 그런 다음 테스트 클래스에서 True 및 내부 메소드를 설정하는 내부 메소드를 설정합니다.

public static string resource (이 컨트롤러 컨트롤러, 문자열 표현식, Params Object [] args)

{

if (! isintestscope)

{

ResourceExpressionFields Fields = getResourceFields (표현, "~/");

return getGlobalresource (필드, args);

}

return string.empty;

}

APP_* 디렉토리 내에서 리소스를 사용하는 테스트 코드 접근 방식을 찾았습니다. 내 블로그에서 내 솔루션을 설명했습니다 링크 텍스트

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top