2010-05-07 4 views
1

.Net에서 모의 ​​테스트를 처음 사용했습니다.
나는 다음과 같은 성격 인 금융 거래 밖으로 테스트입니다 : 내가 아는
모의 객체 속성이 변경되지 않음

int amt =20; 
//sets all the props and func and returns a FinaceAccount. 
//Note I did not SetUp the amt of the account. 
var account =GetFinanceAccount() 


//service layer to be tested 
_financeService.tranx(account,amt); 

//checks if the amt was added to the account.amt 
//here the amt comes out same as that set in GetFinanceAccount. 
Assert.AreEqual(account.amt ,amt) 

를이 제대로 작동하지만 테스트에 문제가 tranx 기능. 은 거기에 당신이 SetupGet을 수행 할 때 "이 속성, 항상 반환이 값을 호출 할 때"당신은 본질적으로 말하는 때문에 닷넷

+0

어떻게 조롱합니까? 그리고 어떤 프레임 워크를 사용합니까? – driis

+0

어떤 프레임 워크를 사용하고 있습니까? 그리고 모의 설치 코드를 포함시킬 수 있습니까? –

+0

조롱을 위해 Moq.Mock을 사용하고 있습니다. 모의 설치 코드는 다음과 같습니다. var financeAccount = new 모의 (); financeAccount.SetupGet (x => x.Id). 반환 (id); financeAccount.SetupGet (x => x.Name). 반품 ("A"); financeAccount.Setup (x => x.Validate()). 반환 (true); 꽤 많은 param 설정이 있지만 GetFinanceAccount() 설정 방법에 amt 속성이 설정되어 있지 않습니다.
frictionlesspulley

답변

2

이 발생에 비웃음에 대한 좋은 참고 자료. 당신이하고 싶은 것은 아마도 "SetupProperty"일 것입니다. 이것은 조롱 된 객체의 모든 속성이 get/set 비헤이비어가있는 일반 속성으로 동작하도록합니다.

Mock<Account> mockAccount = new Mock<Account>(); 
    mockAccount.SetupProperty(mock => mock.amt); 
    // Perhaps set a initial value 
    mockAccount.Object.amt = 10; 
0

난 당신이 속성으로 이동 및 디버그를 선택한 다음 외부 프로그램을 시작 버튼을 클릭 인수가 디버그 맵에 DLL에 전체 경로를 추가로 다음 nunit.exe을 선택 비주얼 스튜디오에 대한 단위 테스트를 연결 제안 테스트 프로젝트 중. 이렇게하면 테스트를 디버그하고 모든 단계를 수행 할 수 있습니다. 이제 당신은 무엇이 잘못되었는지 알 수 있습니다.