2015-01-28 3 views
3

RestSharp не может десериализовать ответ простого Guid.Возврат простого Guid с RestSharp

[Route("User/BeginSession")] 
[HttpGet] 
public Guid BeginSession() 
{ 
    return Guid.NewGuid(); 
} 

Этот тест не:

[Fact] 
public void BeginSession_MadeAsARestRequest_Succeeds() 
{ 
    var client = new RestClient("http://localhost/xyz"); 
    var request = new RestRequest("User/BeginSession"); 

    var a = client.Execute(request); 

    var result = client.Execute<Guid>(request).Data; 

    Assert.NotEqual(
     Guid.Parse("{00000000-0000-0000-0000-000000000000}"), 
     result); 
} 

я должен обернуть Guid с классом, чтобы заставить его работать:

public class GuidResponse 
{ 
    public Guid Guid { get; set; } 
} 

[Route("User/BeginSession2")] 
[HttpGet] 
public GuidResponse BeginSession2() 
{ 
    return new GuidResponse 
    { 
     Guid = Guid.NewGuid() 
    }; 
} 

Этот тест проходит:

[Fact] 
public void BeginSession2_MadeAsARestRequest_Succeeds() 
{ 
    var client = new RestClient("http://localhost/xyz"); 
    var request = new RestRequest("User/BeginSession2"); 

    var result = client.Execute<GuidResponse>(request).Data; 

    Assert.NotEqual(
     Guid.Parse("{00000000-0000-0000-0000-000000000000}"), 
     result.Guid); 
} 

- это ожидаемое поведение?

ответ

2

Я предполагаю, что это потому, что возврат только GUID недействителен JSON. Он будет возвращен как строка, а не как объект JavaScript, например. { "id": "4bae9421-4fe0-4294-a659-9bc37388344b" }

Смежные вопросы