7

私は jest でテストするのが初めてで、テストしたいモジュールからのコンソール出力を見ることができないようです。

私のモジュール.js:

var _ = require('underscore');
exports.filter = function(data) {
    if(_.isArray(data)) {
        console.log("Data is: " + data);
        data = data[0];
    }
return data;
}

私のモジュール-test.js:

jest.dontMock('../my-module');

var testdata = [{label: "test"}, {id: 5}];

describe('test my module', function(){
    it('changes some data' , function(){
        var transformedData = require('../my-module').filter(testdata);
        expect(transformedData).toBe(testdata[0]);
    });
});

jest が「my-module.js」の console.log 出力を飲み込むのはなぜですか?

4

1 に答える 1

4

Jest はデフォルトですべてをモックしているようです。これは私が遭遇した問題です。

アンダースコア "_" がモックされ、目に見えるエラーがなかったため、そもそも実行が console.log に到達しませんでした。

このような状況を防ぐには、(私が知る限り) 3 つの可能性があります。

  1. package.json ファイルで、ノード モジュール (アンダースコアを含む) のモックを防止します。

    "jest": { "unmockedModulePathPatterns": ["/node_modules/"] }

  2. 以下を使用して、テスト ファイルで自動モックを明示的に防止します。

    jest.autoMockOff();

  3. モックからアンダースコアを明示的に除外します。

    jest.unmock('underscore');

于 2015-02-06T17:49:30.017 に答える