preload
and load
are global builtin functions, and GDScript doesn't allow global functions to be defined, so no, you can't override them in the strict sense.
Also, preload
is quite hard to override without losing the parse-time feature of it.
However, you can "override" load
...by not using it.
Just write your own load function, which may wrap a call to load
or your custom mock resources, and call that one instead of load
directly. You can do this by creating an auto-load singleton, which you would call like this:
var resource = MyResourceLoader.load("some_asset.tscn")