Search code examples
javascriptnode.jsunit-testingrequirejsamd

Require file on runtime & unit test issue


I use require.js to load files at runtime like following This is working as expected when I run the file in the right context(I mean when the call is coming from the right path.)

module1.js

define(["otherModule"], function(otherModule) {
 working!!!
....

Now I want to create some unit test to this file (module1) from other context (from folder of tests which is found in diffrent location in the project) and I get error

require.js:145 Uncaught Error: Script error for: otherModule

Since it tries to run the get on this path during the Unit Test which is located in diffrent project structure ...

https://app/path1/path2/path3/otherModule.js

And in runtime which works (from different context) it find it in the path

https://app/path1/path2/path3/path4/path5/otherModule.js

There is additional path4 & path5 in the request that works, How should I solve it to work on both cases (UT/Runtime) ?

http://requirejs.org


Solution

  • I think you should be able to get it working by applying a RequireJS configuration file, so that the module name is abstracted from its path:

    E.g. in the test context, call something like this as initialization step:

      require.config({
        baseUrl: "/path1/path2/path3"
      });
    

    Alternatively, you can also remap single modules like so (this can also be used to inject a different implementation of a specific module for testing etc.):

      require.config({
        paths: {
            "otherModule": "/path1/path2/path3/otherModule"
        }
      });
    

    See here: http://requirejs.org/docs/api.html#config