Blazor 프로젝트에서 Unit 테스트를 만드는데 어 특정 함수 테스트하려합니다만 로그인정보를 불러와야합니다.
질문을 올리실 때는 답글을 달아주시는 분이 최대한 상황을 자세히 알 수 있도록 질문을 올려주세요. 다음의 내용이 들어가면 좋습니다.
무엇을 하고자 하는지
MSTest를 이용해 Unit Test 프로젝트를 추가하려 합니다.
테스트하려는 함수에서 로그인한 사용자 정보(Claim)을 불러오는 과정이 존재합니다만 Unit Test프로젝트에서 로그인 정보를 넣는 방법을 모르겠습니다.
현재 작성한 코드 중 문제가 되는 부분
테스트를 실행하려는 코드는 아래와 같습니다.
//인증된 사용자 정보를 가져옴
if (userService == null)
{
//인증 정보 가져오는 부분
var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync();
var user = authState.User;
if (user.Identity.IsAuthenticated)
{
UserSearch userSearch = new UserSearch
{
FullName = user.Claims.Where(a => a.Type == "name").First().Value,
Email = user.Claims.Where(a => a.Type == "emails").First().Value,
};
}
}
기대하는 동작
로그인한 사용자의 정보를 가져오는 함수를 테스트하기 위해 UnitTest 프로젝트에서는 어떤 작업이 필요한지 알고싶습니다.
위의 코드의 동작을 실행하기전 어떤 작업을 UnitTest에 추가해야 하는지 알고 싶습니다.
네 맞습니다. 지정해주신 부분이 테스트 되어 값을 가져와야합니다.
직접 실행할때는 로그인 페이지가 뜨고 로그인한 결과를 가져오기 때문에 문제가 없는데(참고로 Azure AD를 사용하고 있습니다.)
테스트 프로젝트에서는 어떻게 미리 로그인이 된 상태를 넘겨줘야할지 모르겠습니다.
그렇군요.
인증이 성공했다는 것을 가정하고 함수를 실행해야 한다면 제가 질문드린 부분은 미리 인증이 되었다고 가정한 후 이후의 부분만 실행되는지 확인하도록 짜야되는 거군요.
혹시 Mock 데이터를 생성해 테스트하는 좋은 예제가 있을까요? 가능하면 MSTest로 부탁드립니다.