Ich bin ziemlich neu in der Welt reagieren und versuchen, einfache Freunde Liste Anwendung zu schreiben. Ich schrieb meinen Freundladen im es6 Stil und benutze Babel als Transpiler von es5 zu es6.Reagieren Unit-Test mit Jest in es6
import AppDispatcher from '../dispatcher/app_dispatcher';
import { EventEmitter } from 'events';
import FRIENDS_CONST from '../constants/friends';
const CHANGE_EVENT = 'CHANGE';
let friendsList = [];
let add = (name) => {
let counter = friendsList.length + 1;
let newFriend = {
id: counter,
name: name
};
friendsList.push(newFriend);
}
let remove = (id) => {
let index = friendsList.findIndex(e => e.id == id);
delete friendsList[index];
}
let FriendsStore = Object.assign({}, EventEmitter.prototype, {
getAll:() => {
return friendsList;
},
emitChange:() => {
this.emit(CHANGE_EVENT);
},
addChangeListener: (callback) => {
this.on(CHANGE_EVENT, callback);
},
removeChangeListener: (callback) => {
this.removeListener(CHANGE_EVENT, callback);
}
});
AppDispatcher.register((action) => {
switch (action.actionType) {
case FRIENDS_CONST.ADD_FRIENDS:
add(action.name);
FriendsStore.emitChange();
break;
case FRIENDS_CONST.REMOVE_FRIENDS:
remove(action.id);
FriendsStore.emitChange();
break;
}
});
export default FriendsStore;
Jetzt mag ich meinen Speicher testen und schrieb den Unit-Test auch in es6
jest.dontMock('../../constants/friends');
jest.dontMock('../friends_store');
describe('FriendsStore',() => {
import FRIENDS from '../../constants/friends';
import AppDispatcher from '../../dispatcher/AppDispatcher';
import FriendsStore from '../friends_store';
let FakeAppDispatcher;
let FakeFriendsStore;
let callback;
let addFriends = {
actionType: FRIENDS.ADD_FRIENDS,
name: 'Many'
};
let removeFriend = {
actionType: FRIENDS.REMOVE_FRIENDS,
id: '3'
};
beforeEach(function() {
FakeAppDispatcher = AppDispatcher;
FakeFriendsStore = FriendsStore;
callback = AppDispatcher.register.mock.calls[0][0];
});
it('Should initialize with no friends items', function() {
var all = FriendsStore.getAll();
expect(all).toEqual([]);
});
});
Wenn ich den Test mit Anweisung npm test
auszuführen, habe ich die Fehlermeldung bekommen:
> [email protected] test /Volumes/Developer/reactjs/app5
> echo "Error: no test specified"
Error: no test specified
Was mache ich falsch? Die Dateistruktur sieht wie folgt aus:
Ich bin nicht vertraut mit dem, was 'react-starterify' tut, aber Sie könnten überprüfen [babel- Scherz] (https://github.com/babel/babel-jest), der erwarten wird, dass deine Tests auch in es6 sind. – Brennan
Verfolgen Sie das Jest-Repo jetzt und Sie werden ein paar offene Probleme finden, die mit ES6, Babel und neueren Versionen von Knoten (> 0.10.x) zusammenhängen. Im Moment scheint alles ziemlich kaputt zu sein, geben Sie ihnen ein paar Monate Zeit, um aufzuholen: S – WildService
Ich habe festgestellt, dass es einfacher ist, ein Karma + Jasmin-System zusammenzubauen, als Jest jetzt zu benutzen. – cmp