2014-03-26 9 views
2

단위 테스트에 사용할 수 있도록 HealthVault의 PersonInfo 클래스에 대한 조명기를 작성하고 있습니다. 필자는 이미 기존 PersonInfo에서 XML을 가져 와서 파일에 로컬로 저장했습니다. 나는 PersonInfo.CreateFromXML을 사용하려고 시도하고 있지만 그것을 일으키는 원인이 무엇인지에 대한 지표가없는 null 참조 예외를 발생시키는 것으로 알고 있습니다. 모든Null 참조 HealthVault에서 PersonInfo.CreateFromXML을 호출 할 때 예외가 발생했습니다.

먼저이이 기능을 사용하는 올바른 방법이며, 둘째로 나는이 문제를 해결하기 위해 내가 관리 가지고 PersonInfo 객체

public class PersonInfoFixture 
{ 
    Guid _app_Id = new Guid("00000000-0000-0000-0000-000000000000"); 
    string _app_name = "AppName"; 
    string _app_url = "https://platform.healthvault-ppe.co.uk/platform"; 
    string _shell_url = "https://account.healthvault-ppe.co.uk"; 

    string _person_xml_path = "C:/Work/MI-HV-TEST/Fixtures/HealthVault/XML/person.xml"; 

    public PersonInfo Get_person_fixture() 
    { 
     var hs = new HealthServiceInstance(_app_Id.ToString(), _app_name, "" , new Uri(_app_url), new Uri(_shell_url)); 
     var app = new ApplicationConnection(_app_Id, hs); 
     var doc = new XPathDocument(_person_xml_path); 
     var navigator = doc.CreateNavigator(); 

     return PersonInfo.CreateFromXml(app, navigator) as PersonInfo; 
     } 
} 
+0

예외가 발생하는 위치를 확인하려면 스테이 추적을 확인해야합니다. 'CreateFromXml'의 코드가 없으면 문제가 무엇인지 말할 수 없습니다. – floele

+0

GitHub https://github.com/marteaga/hvmvc-part3에서이 저장소를 복제했으며 코드를 디버깅하고 있습니다. navigator.SelectSingleNode ("name")과 관련이 있습니다. 값; null입니다. 그래서 나는 personInfo 메소드에 문서를 잘못 보낸 것으로 의심된다. –

답변

2

를 반환 할 수 있도록하기 위해 무엇을 할 수 있습니다.

문제는 탐색기가 잘못된 노드를 가리키고 있다는 것입니다.

는 그것은 다음과 같이 설정되어 있어야합니다 :

var app = new ApplicationConnection(); 
var doc = new XPathDocument(_file_path); 

var navigator = doc.CreateNavigator(); 
navigator = navigator.SelectSingleNode("person-info").CreateNavigator(); 

return PersonInfo.CreateFromXml(app, navigator) as PersonInfo; 

그래서이 실수에서 배운다. 이제 PersonInfo 객체를 포함하는 단위 테스트를 할 수 있습니다.

+0

감사합니다! _liam_hall_sitekit_path에 무엇을 넣을 지 설명 할 수 있습니까? –

+0

_liam_hall_sitekit_path는 내가 사용하고 있던 파일 경로입니다. 그것이 그 사람을 묘사했기 때문에 나는 그것을 불렀다. –

관련 문제