text: Title: How to unit test the application without a create_app function due to known bug with socketio
  Body: Hello, I'm struggling to unit test my application because I don't have a create_app() function which I think I need for the unit tests. I heard it was a known bug with socketio that you can't use a create_app() function and then use flask run. How do you unit test an application otherwise? Or is the bug fixed perchance?
  
  My app code is as follows:
  
  ```
  #!/usr/bin/python3
  # maybe delete above line
  # app.py
  
  from flask import Flask, session
  from flask_sqlalchemy import SQLAlchemy
  from flask_login import LoginManager
  import configparser
  from flask_socketio import SocketIO, emit, send, join_room, leave_room
  
  
  config = configparser.ConfigParser()
  config.read("../settings.conf")
  
  app = Flask(__name__)
  
  # Ignores slashes on the end of URLs.
  app.url_map.strict_slashes = False
  
  app.config['SECRET_KEY'] = config.get('SQLALCHEMY','secret_key')
  app.config['SQLALCHEMY_DATABASE_URI'] = config.get('SQLALCHEMY','sqlalchemy_database_uri')
  app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
  
  # init SQLAlchemy so we can use it later
  db = SQLAlchemy(app)
  
  socketio = SocketIO()
  
  socketio.init_app(app)
  
  
  login_manager = LoginManager()
  login_manager.login_view = 'auth.login'
  login_manager.init_app(app)
  
  import models
  
  @login_manager.user_loader
  def load_user(user_id):
      return models.User.query.get(int(user_id))
  
  
  
  # blueprint for auth routes in our app
  from controllers.auth import auth as auth_blueprint
  app.register_blueprint(auth_blueprint)
  
  # blueprint for non-auth parts of app
  from controllers.main import main as main_blueprint
  app.register_blueprint(main_blueprint)
  
  # blueprint for chase_the_ace parts of app
  from controllers.games.chase_the_ace import chase_the_ace as chase_the_ace_blueprint
  app.register_blueprint(chase_the_ace_blueprint)
  
  # blueprint for shed parts of app
  from controllers.games.shed import shed as shed_blueprint
  app.register_blueprint(shed_blueprint)
  
  # Game sockets import game mechanics and socketio listeners.
  from controllers.games import chase_the_ace_gameplay
  
  
  @socketio.on('connect')
  def handle_my_connect_event():
      print('connected')
  
  @socketio.on('disconnect')
  def handle_my_disconnect_event():
      print('disconnected')
  
  # If running app.py, then run app itself.
  if __name__ == '__main__':
      socketio.run(app)
  ```
  
  Models:
  ```# models.py
  
  from flask_login import UserMixin
  from app import db
  
  class User(UserMixin, db.Model):
      id = db.Column(db.Integer, primary_key = True)
      email = db.Column(db.String(100), unique = True)
      username = db.Column(db.String(50), unique = True)
      password = db.Column(db.String(50))
      firstName = db.Column(db.String(50))
      lastName = db.Column(db.String(50))
      chaseTheAceWins = db.Column(db.Integer)
  
  class Player(db.Model):
      id = db.Column(db.Integer, primary_key = True)
      userId = db.Column(db.Integer)
      roomId = db.Column(db.Integer)
      generatedPlayerId = db.Column(db.String(100), unique = True)
      name = db.Column(db.String(100))
      card = db.Column(db.String(10))
      lives = db.Column(db.Integer)
      outOfGame = db.Column(db.Boolean)
  
  class Room(db.Model):
      id = db.Column(db.Integer, primary_key = True)
      roomId = db.Column(db.Integer, unique = True)
      gameType = db.Column(db.String(20))
      hostPlayerId = db.Column(db.String(100))
      currentPlayerId = db.Column(db.String(100))
      dealerPlayerId = db.Column(db.String(100))
      locked = db.Column(db.Boolean)
  ```
  
  
  Is there anything in my app that I'm doing wrong?