2013-03-26 5 views
2

TDD를 사용하려는 일부 ASP MVC를 알고 있습니다. 다음 예제는 xUnit 및 TestDriven (Moq 포함)을 설치 한 것입니다.모의 이미지 업로드 viewmodel

문제는 이미지 업로드 업로드를 주장 할 수 있도록 이미지 업로드 viewmodel을 모의하려고했기 때문입니다.

var imageMock = new Mock<ImageViewModel>(); 
imageMock.Setup(x => x.IsUrl).Returns(true);` 

하는 동안 나는 방법을 잘 모르겠습니다 회원

가상이 아닌 (VB에서 재정의)에

잘못된 설정 :

MOQ 나에게 문제를 준 계속 진행 - 뷰 모델을위한 인터페이스를 만드는 것은 말도 안되는데, 테스트 환경이 아닌 사이트 용으로 프로그래밍하고 있습니다.

모의 환경을 바꾸거나 인터페이스를 정의해야합니까 ...?

경험이 풍부하고 유익한 조언을 해주세요. 제발 당신이하고 싶은 조언을 해주십시오.

감사합니다.

답변

1

우선이 속성은 자동 속성입니까?

public bool IsUrl {get; set;} 

그렇다면 테스트 설정에서 직접 값을 설정하십시오. 자동 속성이 아닌 경우 속성 대신 메서드로 이동하는 것이 더 적합합니다. 그리고 그 시간에 메서드를 가상으로 만들 수 있습니다 (오류 메시지가 실제로 말하는 것입니다).

조롱 할 때 인터페이스가 아니거나 가상이 아닌 것을 조롱 할 수 없습니다. . 일부는 당신을 수 있도록 라이브러리를 조롱 지불하지만 FakeItEasy, MOQ 및 다른 사람들이 가상 할 것을 요구)

이 작업을 수행하려면, 당신은 단순히이 같은 속성 보이게해야합니다 : 두 번째

public virtual bool IsUrl {get; set;} 

을, 뷰 모델에서 무엇을 테스트하고 있습니까? getter와 setter를 테스트하는 것은 코드의 다른 위치에서 테스트 될 가능성이 높으므로 대부분 시간 낭비입니다. 또한 getter 및 setter에 대한 테스트에서 코드가 아닌 컴파일러를 테스트하고 있습니다. .NET에서 getters와 setter가 작동하지 않으면 많은 문제가 발생합니다. 뷰 모델의 생성을 테스트 한 다음 생성 후 올바른 값을 가지는지 확인하는 것이 좋습니다.

+1

그것은 자동 소유물이며 지긋 지긋한 물건을 사용하기에 좋은 캐치, 왜 그것을 조롱합니까? :) 당신은 완전히 옳았습니다 ... 나는 단지 예를보고 있었고 그들과 함께 버려졌습니다. 사람들은 모든 것을 조롱하고 있습니다, 나는 그 길을 갈 길이라고 생각했습니다. 나는 getter/setters를 테스트하지 않고 MS가 CLR 및 .NET 프레임 워크를 품질 보증하도록 지불하지 않았습니다. 내가 테스트 할 내용은 내가 언급 한 이미지가 업로드 할 메소드에 의해 실제로 업로드된다는 것입니다. 당신이 말한 것을 해봅시다. (모두 의미가 있습니다.) 돌아올 것입니다. 신속한 응답을 보내 주셔서 감사합니다! –