Я застрял в написании модульных тестов для своего кода, который использует обещания rsvp. Я пытался использовать pit
тесты, но не везло в создании тесты пройдены для RSVP, однако встроенные обещания работать нормально:Невозможно протестировать обещания rsvp в шутке
//jest.autoMockOff(); - even with this rsvp test is failing
jest.unmock('rsvp');
import rsvp from 'rsvp';
describe('my rsvp tests',() => {
// this test fails
pit('testing rsvp promise',() => {
return new rsvp.Promise((resolve) => {
resolve("getting something");
}).then(()=> { expect(1).toBe(1); });
});
// this test passes
pit('testing pure promise',() => {
return new Promise((resolve) => {
resolve("getting something");
}).then(()=> { expect(1).toBe(1); });
});
});
Соответствующие детали от моего package.json:
"rsvp": "^3.2.1",
"babelify": "^7.2.0",
"babel-preset-es2015": "^6.6.0",
"babel-preset-react": "^6.5.0",
"babel-preset-stage-0": "^6.5.0",
"babel-jest": "^9.0.0",
"jest-cli": "*"
...
"scripts": {
"test": "jest"
},
"jest": {
"unmockedModulePathPatterns": [
"<rootDir>/node_modules/react",
"<rootDir>/node_modules/react-dom",
"<rootDir>/node_modules/react-addons-test-utils"
]
}
.babelrc:
{
"presets": ["es2015", "react", "stage-0"]
}
Я вижу два возможных путей их устранения, но, как ни один из них:
- Мощное обещание rsvp с использованием встроенных обещаний. Недостаток: модульные тесты станут более подробными, мне нужно будет высмеять другие функции, такие как rsvp.all, которые я не хочу делать.
- Миграция с rsvp на встроенные обещания. Возможно, однако я уже использую одну библиотеку, которая зависит от rsvp, которая делает запросы ajax. Я также не уверен, что встроенные обещания могут заменить все, что предоставляет rsvp (например, «все» и другие вспомогательные функции).
Возможно, вы должны указать ошибку? – Laurent