protected virtual async Task CreateAsyncMocks() { mockup.Add <IValidSchemaTypeManager>(s => { var mock = new Mock <IValidSchemaTypeManager>(); mock.Setup(i => i.IsValid(It.IsAny <Type>())).Returns(true); return(mock.Object); }); mockup.Add <JsonSchemaGenerator>(s => new JsonSchemaGenerator(HalcyonConvention.DefaultJsonSchemaGeneratorSettings)); mockup.Add <ISchemaBuilder>(s => new SchemaBuilder(s.Get <JsonSchemaGenerator>(), s.Get <IValidSchemaTypeManager>())); //This is setup outside the mock callbacks, so we can do async properly //The get must be after the registrations EndpointClientDefinition endpoint = null; mockup.TryAdd <IClientGenerator>(s => { if (endpoint == null) { throw new InvalidOperationException("This should not happen. EndpointClientDefinition not yet resolved and is null."); } var mock = new Mock <IClientGenerator>(); IEnumerable <EndpointClientDefinition> mockEndpoints = new List <EndpointClientDefinition>() { endpoint }; mock.Setup(i => i.GetEndpointDefinitions()).Returns(Task.FromResult(mockEndpoints)); return(mock.Object); }); var schemaBuilder = mockup.Get <ISchemaBuilder>(); endpoint = await CreateEndpointDefinition(schemaBuilder); }