diff --git a/packages/dev/core/src/Engines/nullEngine.ts b/packages/dev/core/src/Engines/nullEngine.ts index 62363376d8d..428764033b0 100644 --- a/packages/dev/core/src/Engines/nullEngine.ts +++ b/packages/dev/core/src/Engines/nullEngine.ts @@ -686,7 +686,9 @@ export class NullEngine extends Engine { texture.isReady = true; if (onLoad) { - onLoad(); + setTimeout(() => { + onLoad(); + }); } this._internalTexturesCache.push(texture); diff --git a/packages/dev/core/test/unit/Misc/babylon.assetsManager.test.ts b/packages/dev/core/test/unit/Misc/babylon.assetsManager.test.ts new file mode 100644 index 00000000000..3639f8f6d7e --- /dev/null +++ b/packages/dev/core/test/unit/Misc/babylon.assetsManager.test.ts @@ -0,0 +1,22 @@ +import { AssetsManager } from "core/Misc/assetsManager"; +import { NullEngine } from "core/Engines/nullEngine"; +import { Scene } from "core/scene"; +import { Texture } from "core/Materials/Textures/texture"; + +describe("Assets Manager", () => { + it("should fulfill texture asset task with a texture when using NullEngine", async () => { + const engine = new NullEngine(); + const scene = new Scene(engine); + const assetsManager = new AssetsManager(scene); + const textureTask = assetsManager.addTextureTask("texture task", "texture.jpg"); + const textureLoadingPromise = new Promise((resolve) => { + textureTask.onSuccess = (task) => { + resolve(task.texture); + }; + }); + + await assetsManager.loadAsync(); + + await expect(textureLoadingPromise).resolves.toBeInstanceOf(Texture); + }); +});