https://jsfiddle.net/3apqnhmw/

```jsx
class Foo extends React.Component {
  render() {
     return <div>Foo</div>
  }
}

class App extends React.Component {
  render() {
    return Foo
  }
}
```

When `App` returns `Foo` instead of `<Foo />` accidentally, Fiber does not catch this.
expect(callback.mock.calls.length).toBe(1);
    ReactDOM.render(<div className="foo" />, container, callback);
    expect(callback.mock.calls.length).toBe(2);
    ReactDOM.render(<span />, container, callback);
    expect(callback.mock.calls.length).toBe(3);
  });
  it('throws usefully when rendering badly-typed elements', () => {
    spyOn(console, 'error');
    var X = undefined;
    expect(() => ReactTestUtils.renderIntoDocument(<X />)).toThrowError(
      'Element type is invalid: expected a string (for built-in components) ' +
        'or a class/function (for composite components) but got: undefined. ' +
        "You likely forgot to export your component from the file it's " +
        'defined in.',
    );
    var Y = null;
    expect(() => ReactTestUtils.renderIntoDocument(<Y />)).toThrowError(
      'Element type is invalid: expected a string (for built-in components) ' +
        'or a class/function (for composite components) but got: null.',
    );
    
    expectDev(console.error.calls.count()).toBe(2);
  });
  it('includes owner name in the error about badly-typed elements', () => {
    spyOn(console, 'error');
    var X = undefined;
    function Indirection(props) {
      return <div>{props.children}</div>;
    }
    function Bar() {