En este momento estás viendo Cómo probar el método incluye el método asíncrono en Unity

 – Unity

Cómo probar el método incluye el método asíncrono en Unity – Unity

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

Deja una respuesta