public SystemFunctionsTests() { var scope = new ServiceContainer(); scope.AddMethodRegistry <SystemFunctionProvider>(); var groups = new Dictionary <ObjectName, IList <SqlObject> >(); groups[new ObjectName("a")] = new List <SqlObject> { SqlObject.Integer(2), SqlObject.Integer(45) }; var groupResolver = new Mock <IGroupResolver>(); groupResolver.SetupGet(x => x.GroupId) .Returns(0); groupResolver.SetupGet(x => x.Size) .Returns(groups[new ObjectName("a")].Count); groupResolver.Setup(x => x.ResolveReferenceAsync(It.IsAny <ObjectName>(), It.IsAny <long>())) .Returns <ObjectName, long>((name, index) => { IList <SqlObject> group; groups.TryGetValue(name, out group); return(Task.FromResult(group[(int)index])); }); var refResolver = new Mock <IReferenceResolver>(); refResolver.Setup(x => x.ResolveType(It.IsAny <ObjectName>())) .Returns(PrimitiveTypes.Integer()); groupResolver.Setup(x => x.GetResolver(It.IsAny <long>())) .Returns(refResolver.Object); scope.RegisterInstance <IGroupResolver>(groupResolver.Object); scope.RegisterInstance <IReferenceResolver>(refResolver.Object); var mock = new Mock <IContext>(); mock.SetupGet(x => x.Scope) .Returns(scope); mock.SetupGet(x => x.ContextName) .Returns("test"); context = mock.Object; }