我一直在为使用rsvp承诺的代码编写单元测试。我试图使用pit测试,但没有成功地通过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"]
}我看到了两种可能的解决办法,但它们都不一样:
发布于 2016-03-27 01:12:39
我找到了一个解决办法--或者,更好的说,一个解决办法。简而言之:不需要使用pit方法,可以用' it‘替换它们,但是在完成之前应该运行所有计时器,可以通过调用jest.runAllTimers()来完成。
这不是一个优雅的解决方案,因为我没有看到任何理由,为什么rsvp承诺不应该在开玩笑而不是‘嵌入式’的,但至少它的工作。
https://stackoverflow.com/questions/36214027
复制相似问题