4

bower、grunt、bowerify (shim を使用) を使用するプロジェクトがあり、Jest が大好きなので、それをテストしたいとします。テストを実行するときに、ブラウザー化された shim モジュールを見て冗談を言うにはどうすればよいでしょうか。grunt を使用して npm test コマンドを開始します。これが私のpackage.jsonファイルです。

"browser": {
    "jquery": "./bower_components/jquery/dist/jquery.js",
    "foundation": "./bower_components/foundation/js/foundation/foundation.js",
    "fastclick": "./bower_components/fastclick/lib/fastclick.js",
    "greensock-tm": "./bower_components/gsap/src/uncompressed/TweenMax.js",
    "greensock-css": "./bower_components/gsap/src/uncompressed/plugins/CSSPlugin.js",
    "greensock-time": "./bower_components/gsap/src/uncompressed/TimelineMax.js",
    "scrollmagic": "./bower_components/ScrollMagic/js/jquery.scrollmagic.js",
    "handlebars": "./bower_components/handlebars/handlebars.runtime.js"
  },
  "browserify-shim": {
    "jquery": "$",
    "greensock-css": "CSSPlugin",
    "fastclick": "FastClick",
    "greensock-tm": "TweenMax",
    "greensock-time": "TimelineMax",
    "scrollmagic": "ScrollMagic",
    "foundation": "foundation",
    "handlebars": "Handlebars"
  },
  "browserify": {
    "transform": [
      "browserify-shim"
    ]
  },

現在、テストを実行する前に、私のうなり声ファイルでこれを行うことで、これをほぼ解決しています。

grunt.registerTask("shimBowerForTests",function(){
    var readJson = require('read-package-json');
    var fs = require('fs');
    var remapify = require('remapify');
    readJson('./package.json', console.error, false, function (er, data) {
      if (er) {
        throw "There was an error reading the file";
      }
      var packages = data.browser;
      var browserify = require('browserify');
      for (var key in packages){
        var b = browserify();
        var wstream = fs.createWriteStream("devjs/test/modules/"+key+'.js');
        b.add(packages[key]);
        b.bundle().pipe(wstream);
      }
    });
  });

と。

exec: {
      jestTest: {
        command: 'cp -r devjs/modules devjs/test/modules && npm test'
      }
    }

問題は、browserify を使用して、ブラウザーのすべてを組み合わせると、私のセットアップでうまく機能し、このような shimmed モジュールを要求できることです。 require('jquery') //exampleしかし、jest cli では、何らかの方法でプレフィックス ./ を付けない限り、モジュールを見つけることができるため、テストは失敗します。require('./jquery')

4

2 に答える 2