0
我一直在为使用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提供的所有内容(例如'all'和其他帮助函数)。
也许你应该提交一个错误? – Laurent