mirror of
https://github.com/facebook/react.git
synced 2026-02-24 12:43:00 +00:00
We currently write all our tests against the DOM implementation. I need a way to run the Fiber tests against it. But I don't want to take on any package dependencies on Fiber modules yet. There's a problem with jest right now where you can't globally mock modules that already exist. So I have to add a global call to jest.mock. Luckily we already have a way to test the useCreateElement paths using a feature flag. I won't activate this flag in travis until it passes, but the idea is to run all three variants in travis. I'm not sure that invoking rAF and rIC synchronously is the best way to test this since it doesn't capture the backwards compatibility aspect. I.e. the fact that people might be relying on the synchronous nature in real apps too. It's a start. Ideally, jest would have these built-in.
55 lines
1.3 KiB
JavaScript
55 lines
1.3 KiB
JavaScript
'use strict';
|
|
|
|
// We want to globally mock this but jest doesn't let us do that by default
|
|
// for a file that already exists. So we have to explicitly mock it.
|
|
jest.mock('ReactDOM');
|
|
|
|
var env = jasmine.getEnv();
|
|
|
|
var callCount = 0;
|
|
var oldError = console.error;
|
|
var newError = function() {
|
|
callCount++;
|
|
oldError.apply(this, arguments);
|
|
};
|
|
|
|
console.error = newError;
|
|
|
|
env.beforeEach(() => {
|
|
callCount = 0;
|
|
jasmine.addMatchers({
|
|
toBeReset() {
|
|
return {
|
|
compare(actual) {
|
|
// TODO: Catch test cases that call spyOn() but don't inspect the mock
|
|
// properly.
|
|
if (actual !== newError && !jasmine.isSpy(actual)) {
|
|
return {
|
|
pass: false,
|
|
message: 'Test did not tear down console.error mock properly.',
|
|
};
|
|
}
|
|
return {pass: true};
|
|
},
|
|
};
|
|
},
|
|
toNotHaveBeenCalled() {
|
|
return {
|
|
compare(actual) {
|
|
return {
|
|
pass: callCount === 0,
|
|
message:
|
|
'Expected test not to warn. If the warning is expected, mock ' +
|
|
'it out using spyOn(console, \'error\'); and test that the ' +
|
|
'warning occurs.',
|
|
};
|
|
},
|
|
};
|
|
},
|
|
});
|
|
});
|
|
env.afterEach(() => {
|
|
expect(console.error).toBeReset();
|
|
expect(console.error).toNotHaveBeenCalled();
|
|
});
|