You not passing UClass pointer (which TSubclassOf stores), insted NewObject creates class defined in template argument which is UAction_Base and you only pass CDO of class you wanted as template, which only transfers defaults and thats it, but you creating UAction_Base .
You need to give actionsToSpawn[i]
as 2nd argument, and those 2 arguments (outer and class) should do the job, the rest is optional:
So:
NewObject<UAction_Base>(this, actionsToSpawn[i]);
Maybe template argument confuse you, main purpose of it is auto casting, so function return already proper type of pointer, but if class is not defined in function arguments function it gonna use class from template, it is optional feature, normaly class should be defined in function arguments (UClass pointer, which TSubclassOf is just special template storing it to limit selection to specific class relation).
Since you creating instance of UAction_Base instead of blueprint class, blueprint does not get executed at all