这是我的惰性组件:
const LazyBones = React.lazy(() => import('@graveyard/Bones')
.then(module => ({default: module.BonesComponent}))
export default LazyBones
我像这样导入它:
import Bones from './LazyBones'
export default () => (
<Suspense fallback={<p>Loading bones</p>}>
<Bones />
</Suspense>
)
在我的测试中,我有这样的事情:
import * as LazyBones from './LazyBones';
describe('<BoneYard />', function() {
let Bones;
let wrapper;
beforeEach(function() {
Bones = sinon.stub(LazyBones, 'default');
Bones.returns(() => (<div />));
wrapper = shallow(<BoneYard />);
});
afterEach(function() {
Bones.restore();
});
it('renders bones', function() {
console.log(wrapper)
expect(wrapper.exists(Bones)).to.equal(true);
})
})
我期望测试通过,console.log 打印出来:
<Suspense fallback={{...}}>
<Bones />
</Suspense>
但不是<Bones />
我得到<lazy />
并且它没有通过测试。
如何模拟导入的 Lazy React 组件,以便我的简单测试通过?