ktoś napisał testy jasmine/jest przy użyciu składni es2015? ile potrzebuje shimming/polyfill/gerrymandering?babel-jest ES2015 oświadczenia importowe
Mam problemy z prawidłowym importowaniem funkcji. Mam jeden moduł. .../utils/TweetUtils.js
'use strict';
export function getListOfTweetIds (tweets) {
return Object.keys(tweets);
};
i jeden test suite:
... ./__ testy __/TweetUtils-test.js
'use strict';
jest.dontMock('../TweetUtils');
import * as TweetUtils from '../TweetUtils';
describe('Tweet utilities module',() => {
it('has access to the TweetUtils methods',() => {
let testObj = {a:'a',b:'b',c:'c'};
// Passes
expect(TweetUtils.getListOfTweetIds).toBeDefined();
// Passes
expect(typeof TweetUtils.getListOfTweetIds).toBe('function');
// Fails
expect(TweetUtils.getListOfTweetIds(testObj)).toBeTruthy();
});
});
Jeśli zhakuję wyjście konsoli do pakietu z czymś takim: expect(‘’).toBe(TweetUtils);
Jasmine raporty to:
- Expected: '' toBe: {
default: {
getListOfTweetIds: Function
},
getListOfTweetIds: Function
}
Więc wydaje się, że instrukcja import coś robi, ale to zdecydowanie nie jest moje metody importowania uczciwie. I uzyskać takie same wyniki przy importować za pomocą funkcji nazwanej składnię: import {getListOfTweetIds} from ‘../TweetUtils’;
Ale jeśli mogę użyć domyślnego składnię: import getListOfTweetIds from ‘../TweetUtils’;
Druga specyfikacja nie - to już nie typeof function
, ale typeof object // => {default: Function}
Byłem czesanie docs i otwarte kwestie. Przez kilka miesięcy występowały pokrewne problemy, ale znane problemy nie wyglądają dobrze. Próbowałem zaimportować moje dowody jest.dontMock, aby uniknąć podnoszenia, około: https://github.com/babel/babel-jest/issues/16, ale bez kości.
Wszystko działa gdybym modyfikować TweetUtils.js wykorzystania module.exports = function…
i dostosowania go do pakietu, używając const myFunction = require(‘../TweetUtils’)
, ale nie czuję, że kierowanie prawdziwą ES2015 magii. Czy wszyscy teraz mają do czynienia z nieporęcznymi robotami, a ekosystem przyzwyczaja się do nowej składni?
W moim przypadku to tylko pracował kiedy dodałem .DEFAULT: 'const TweetUtils = require ("../ TweetUtils") domyślnie; ' – vitalets