3

我遇到了一个关于 jest 的奇怪问题:更改 jest 查找其测试文件的位置似乎会破坏测试。

我已将其缩小到一个非常小的可重现案例。

  • 这个笑话配置,在我们的package.json成功设置:

    "jest": {
      "testFileExtensions": ["jest"],
      "testPathDirs": ["Views/Test"],
      "scriptPreprocessor": "Views/Test/preprocessor.js",
      "moduleFileExtensions": [ "js", "jsx" ],
      "unmockedModulePathPatterns": [ "react" ]
    }
    

    像这样:

    npm info it worked if it ends with ok
    npm info using npm@2.2.0
    npm info using node@v0.10.33
    npm info pretest outfits@0.0.0
    npm info test outfits@0.0.0
    
    > outfits@0.0.0 test C:\tfs\Nordstrom.Outfits\Nordstrom.Outfits
    > jest
    
    Using Jest CLI v0.2.2
    Waiting on 2 tests...
    PASS  Views\Test\__tests__\Components\Outfit\Description\Description.jest (3.164s)
    Waiting on 1 test...
    PASS  Views\Test\__tests__\Components\Outfit\GetTheLook\GetTheLook.jest (4.475s)
    2 tests passed (2 total)
    Run time: 5.339s
    npm info posttest outfits@0.0.0
    npm info ok
    
  • 这个笑话配置会导致两个测试之一失败。唯一的变化是更改它查找__tests__目录的根目录。

    "jest": {
      "testFileExtensions": ["jest"],
      "testPathDirs": ["Views"],
      "scriptPreprocessor": "Views/Test/preprocessor.js",
      "moduleFileExtensions": [ "js", "jsx" ],
      "unmockedModulePathPatterns": [ "react" ]
    }
    

    有一个看起来像这样的奇怪异常(为了简洁而省略并为了可读性而重排):

    Using Jest CLI v0.2.2
    Waiting on 2 tests...
     PASS  Views\Test\__tests__\Components\Outfit\Description\Description.jest (3.108s)
    Waiting on 1 test...
     FAIL  Views\Test\__tests__\Components\Outfit\GetTheLook\GetTheLook.jest (3.233s)
    ● Get the look to › it encountered a declaration exception
      - TypeError:
          C:\tfs\Nordstrom.Outfits\Nordstrom.Outfits\node_modules\nord\flux.js:
          C:\tfs\Nordstrom.Outfits\Nordstrom.Outfits\node_modules\nord\core\actions.js:
          C:\tfs\Nordstrom.Outfits\Nordstrom.Outfits\node_modules\nord\util\useGlobal.js:
          C:\tfs\Nordstrom.Outfits\Nordstrom.Outfits\node_modules\nord\util\object\getDeepProperty.js:
          C:\tfs\Nordstrom.Outfits\Nordstrom.Outfits\node_modules\nord\util\object\result.js:
          C:\tfs\Nordstrom.Outfits\Nordstrom.Outfits\node_modules\nord\node_modules\lodash-node\compat\object\result.js:
          C:\tfs\Nordstrom.Outfits\Nordstrom.Outfits\node_modules\nord\node_modules\lodash-node\compat\lang\isFunction.js:
          C:\tfs\Nordstrom.Outfits\Nordstrom.Outfits\node_modules\nord\node_modules\lodash-node\compat\lang\isNative.js:
    
          Cannot call method 'replace' of undefined
            at C:\tfs\Nordstrom.Outfits\Nordstrom.Outfits\node_modules\nord\node_modules\lodash-node\compat\lang\isNative.js:27:4
            at Object.runContentWithLocalBindings (C:\tfs\Nordstrom.Outfits\Nordstrom.Outfits\node_modules\jest-cli\src\lib\utils.js:357:17)
            at Loader._execModule (C:\tfs\Nordstrom.Outfits\Nordstrom.Outfits\node_modules\jest-cli\src\HasteModuleLoader\HasteModuleLoader.js:245:9)
            at Loader.requireModule (C:\tfs\Nordstrom.Outfits\Nordstrom.Outfits\node_modules\jest-cli\src\HasteModuleLoader\HasteModuleLoader.js:900:12)
            at Loader._generateMock (C:\tfs\Nordstrom.Outfits\Nordstrom.Outfits\node_modules\jest-cli\src\HasteModuleLoader\HasteModuleLoader.js:276:30)
            at Loader.requireMock (C:\tfs\Nordstrom.Outfits\Nordstrom.Outfits\node_modules\jest-cli\src\HasteModuleLoader\HasteModuleLoader.js:796:43)
            at Loader.requireModuleOrMock (C:\tfs\Nordstrom.Outfits\Nordstrom.Outfits\node_modules\jest-cli\src\HasteModuleLoader\HasteModuleLoader.js:919:17)
            at C:\tfs\Nordstrom.Outfits\Nordstrom.Outfits\node_modules\nord\node_modules\lodash-node\compat\lang\isFunction.js:2:16
            ...
            at Suite.<anonymous> (C:\tfs\Nordstrom.Outfits\Nordstrom.Outfits\Views\Test\__tests__\Components\Outfit\GetTheLook\GetTheLook.jest:5:13)
            at env.describe_ (<anonymous>:40:25)
            at env.describe (<anonymous>:27:19)
            at describe (C:\tfs\Nordstrom.Outfits\Nordstrom.Outfits\node_modules\jest-cli\vendor\jasmine\jasmine-1.3.0.js:604:27)
            at C:\tfs\Nordstrom.Outfits\Nordstrom.Outfits\Views\Test\__tests__\Components\Outfit\GetTheLook\GetTheLook.jest:4:1
            ...
            at process._tickCallback (node.js:419:13)
    1 test failed, 1 test passed (2 total)
    Run time: 4.108s
    npm info outfits@0.0.0 Failed to exec test script
    npm ERR! Test failed.  See above for more details.
    

我们的源代码树(为简洁起见也省略了)如下所示:

<rootDir>/
|
+- package.json
|
+-node_modules/
| |
| +-gulp/
| +-jest/
| +-react
| +-...
|
+-Views/
  |
  +-Components/
  | |
  | +-Description/Description.jsx
  | +-GetTheLook/GetTheLook.jsx
  |
  +-Test/
    |
    +- preprocessor.js
    |
    +- __tests__/
       |
       +-Components/
         |
         +-Outfit/
           |
           +-Description/Description.jest
           +-GetTheLook/GetTheLook.jest
4

0 回答 0