Cómo probar el método incluye el método asíncrono en Unity
– UnityAssets3Free
bienvenido , me llamo Camilo y esta vez os traigo
nueva pregunta curiosa
Quiero probar el método usando el método asíncrono. Pero cuando ejecuto la prueba, UnityEditor se bloquea.
Creo que este problema se debe al método asíncrono. No sé cómo resolver este problema.
Versión de Unidad: Unidad 2020.3.33f1
public async static Task<string> GetAsync()
// Do something
HttpResponseMessage response = await request.GetAsync(..);
string responseData = await response.Content.ReadAsStringAsync();
return response Data
...
public string GetData()
Task<string> res = GetAsync();
return res.Result;
////////////////// Test Code //////////////
[Test]
public void Test_GetData()
...
string res = GetData()
...
1 respuesta 1
Sin probarlo, debe usar async/await en todas partes.
Cuando use async/await, como hizo Task para devolver el tipo de cadena, pero para el método void, solo use Task.
digamos
public static async Task<string> GetAsync()
return await Task.FromResult("test");
y su prueba debería verse así:
[Test]
public async Task Test_GetAsync()
var result = await GetAsync();
Assert.AreEqual("test", result);
si tomamos tu código así
public async static Task<string> GetAsync()
// what ever
.....
return responseData
la prueba sera:
[Test]
public async Task Test_GetData()
...
string res = await GetData()
...
Si su proyecto de prueba es un marco .net más antiguo, lo actualizaría a una versión más nueva, como sugiere esta respuesta. De lo contrario, si está bloqueado y no puede actualizar, puede hacer algo que no sugiero como menciona esta respuesta.
[Test]
public void Test_GetData()
var result = GetAsync().GetAwaiter();
Assert.AreEqual("test", result.GetResult());
nota: si aun no se resuelve tu pregunta por favor dejar un comentario y pronto lo podremos de nuevo , muchas gracias
por hoy,hasta la proxima