spinnerbox Posted February 19, 2016 Share Posted February 19, 2016 I have this test: function testLoadAtlasJSONHash_CreateCustomJSONAtlasAndRunTheFunc_PassesIfThePhaserLoaderContainsTheAssetKey () { var keyName = 'KEY_NAME', keyValue = 'keyValue', sheetUrl = 'assets/testing/images/guidesAndBackgrounds.png', sheetConfigUrl = 'assets/testing/settings/guidesAndBackgroundsHash.json'; WML.addConstant(WML.ImageAssetKeys, keyName, keyValue); game.load.atlasJSONHash(WML.ImageAssetKeys[keyName], sheetUrl, sheetConfigUrl); assertTrue(game.load.checkKeyExists(Phaser.Loader.TEXTURE_ATLAS_JSON_HASH, keyName)); } Note: I have separate tests which pass for WML.ImageAssetKeys[keyName] and for WML.addConstant() And I am not sure where it is failing. checkKeyExists() returns false. How can I know or find why it returns false? Link to comment Share on other sites More sharing options...
spinnerbox Posted February 19, 2016 Author Share Posted February 19, 2016 Well after some fiddling I found what is the problem. The loader needs time to load the asset, so the assertion must be run after the file finishes loading. Here is the test which passes. function testLoadAtlasJSONHash_CreateCustomJSONAtlasAndRunTheFunc_PassesIfThePhaserLoaderContainsTheAssetKey () { var keyName = 'KEY_NAME', keyValue = 'keyValue', sheetUrl = 'assets/testing/images/guidesAndBackgrounds.png', sheetConfigUrl = 'assets/testing/settings/guidesAndBackgroundsHash.json', fileCompleteListener= function () { assertTrue(game.load.checkKeyExists(Phaser.Loader.TEXTURE_ATLAS_JSON_HASH, keyName)); }; WML.loadAtlasJSONHash(keyName, keyValue, sheetUrl, sheetConfigUrl).onFileComplete.add(fileCompleteListener); } Yes this doesn't follow the Arrange-Act-Assert rule but it works. loadAtlasJSONHash = function (keyName, keyValue, sheetUrl, sheetConfigUrl) { WML.addConstant(WML.ImageAssetKeys, keyName, keyValue); return game.load.atlasJSONHash(WML.ImageAssetKeys[keyName], sheetUrl, sheetConfigUrl); }; Link to comment Share on other sites More sharing options...
Recommended Posts