Skip to content

Upgrading to 0.8.0 will break imports from outside of the test's directory #1145

Closed
@adregan

Description

@adregan

If you are reporting a bug, please fill in below. Otherwise feel free to remove this template entirely.

Can you reproduce the problem with latest npm?

Yes. npm 4.0.3

Description

After upgrading to react-scripts 0.8.0 tests that import files or utilities from outside the current testing directory return 'test-file-stub' as the default (and undefined, of course, for any destructured imports).

Expected behavior

In the prior version of react-scripts, importing utilities into tests worked as expected. If you had a utils directory in your src and you imported it into a test running in another directory in src, you would have access to to the imported code. For example:

src
├── utils
│   └── range.js
└── parsers
    └── books.js
    └── books.test.js

Where in the test file books.test.js:

import parser from './book';
import range from '../utils/range';

console.log(parser);
console.log(range);

const generateFakeBook = (n) => ({title: `Hello ${n}`, author: 'Who Ever'});

it('should parse the book', () => {
  for(let n in range(10)) {
    expect(
      parser(generateFakeBook(n))
    ).toEqual({
      title: '', 
      author: ''
    });
  }
});

The test would run and if you logged out the range function, you would see that it was the function you expected. In the prior release, you could make use of your utility functions in your tests as well as import other items for assisting in your testing.

Actual behavior

If you log out range, you'll see test-file-stub. This happens with any import outside of the directory with the test.

Environment

Run these commands in the project folder and fill in their results:

  1. npm ls react-scripts (if you haven’t ejected):

[email protected]

  1. node -v:

v7.2.0

  1. npm -v:

4.0.3

Then, specify:

  1. Operating system:
    Mac OS X 10.11.6

  2. Browser and version:
    Firefox 50

Reproducible Demo

I've created 2 versions to show the behavior in 0.7.0 and 0.8.0 and included them in this repo: https://github.com/adregan/create-react-app-issue

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions