let server;
export const startServer = () => {
  return createConnection()
    .then(async () => {
      log('Connection to DB established');
      const schema = await buildSchema({
        resolvers: [
          ...
        ],
        globalMiddlewares: [ResolveTime],
        authChecker: authChecker,
      });
      server = new ApolloServer({
        schema,
      });
      log('Server created');
 
      await server.listen(process.env.PORT);
      log('Server has started! on PORT:', process.env.PORT);
      return server;
    })
    .catch((error) => console.log(error));
};
export const stopServer = () => {
  console.log('Stopping');
  server && server.stop();
};
// This prints 'Getting!! false'
export const getServer = () => {
  console.log('Getting!!', !!server);
  return server;
};
The output
Connection to DB established
Schema built
Server created
Server has started! on PORT: 8080
And then after that it prints
'Getting!! false'
So it is super odd. I definitely await the startServer command before executing the test.
I can't figure out why server is undefined.
stopServer works perfectly fine and I know I am calling getServer before stopServer and after startServer.
