2016-06-03 1 views
0

우리는 전자 상거래 애플리케이션에 PayPal Express Checkout을 통합하고 있습니다. 이것이 작동하는 방식은 웹 사이트를 PayPal SDK를 통해 PayPal 서버에 연결하는 "게이트웨이"입니다. Visual Studio에서 해당 API에 대한 통합 테스트를 작성하고 있습니다. 일반적인 API 테스트를 통해 요청을 순서에 관계없이 연결하고 테스트를 실행할 수 있습니다. 여기 전형적인 익스프레스 체크 아웃 통합 SetExpressCheckout 전화와 흐름입니다 -> 토큰을 얻고 (브라우저에서) 구매자의 계정으로 로그인 -> 선택 GetExpressCheckout 전화 -> DoExpressCheckout 전화 -> DoAuthorize 전화 -> DoCapture 전화PayPal 브라우저 로그인을 Visual Studio 통합 테스트에 통합하는 방법?

문제는 테스트 플로우를 깨지 않고 브라우저 로그인을 시뮬레이트 할 수 없다는 것입니다. 테스트를 시작할 수 있어야하고 테스트 클래스에서 브라우저 창을 열어야합니다. 거기에 로그인하여 창을 닫을 수 있습니다. 이제는 브라우저 클로저를 감지 한 다음 DoExpressCheckout 및 후속 테스트로 테스트해야합니다. 이것이 성취 될 수 있습니까?

몇 가지 도구를 검색했지만 브라우저 자동화 만 있습니다. 이 시점에서 나는 함께 일할 웹 사이트가 없기 때문에 그것은 나에게 적용되지 않습니다. 나는 단지 "게이트웨이"에 대한 JSON 요청을 진행할 것이다.

답변

0

아니 완벽한 솔루션,하지만

는 테스트 클래스는 브라우저 창을 열고 있습니다. 거기에 로그인하여 창을 닫을 수 있습니다. 지금, 나는이

이 비슷한으로 archieved 할 수있는 브라우저 폐쇄 감지하는 테스트가 필요합니다 Wait till a process ends

+0

고마워요! 나는 약간의 수정을 가할 수 있고 그것을 작동하게 만들 수있다. – NullReference

2

건물 @philn에 의해 주어진 답시를, 나는 그것을하는 방법을 만들었습니다. 모든 사람의 이익을 위해 여기에 코드가 있습니다.

private bool CustomerLogin(string token) 
    { 
     Process browserProcess = new Process() 
     { 
      EnableRaisingEvents = true 
     }; 
     bool success = false; 

     browserProcess.StartInfo = new ProcessStartInfo("iexplore.exe", 
      "-nomerge https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=" + token); 
     browserProcess.Exited += browserProcess_Exited; 
     browserProcess.Start(); 
     browserProcess.WaitForExit(); 

     if (eventHandled) success = true; 
     return success; 
    } 

    //Event handler for browser login 
    internal void browserProcess_Exited(object sender, EventArgs e) 
    { 
     eventHandled = true; 

    } 
관련 문제