public static IBuildRepository MockIBuildRepository() { var mock = new Mock <IBuildRepository>(); mock.Setup(m => m.GetSubscribedBuilds(It.IsAny <string>())) .Returns(() => Task.FromResult(RepositoryResult <List <RecentBuilds> > .CreateSuccess(_list))); mock.Setup(m => m.SubscribeToBuild(It.IsAny <string>(), It.IsAny <string>())) .Returns <string, string>((user, build) => { if (_list.Any(b => b.Name == build)) { return(Task.FromResult(RepositoryResult.CreateInvalid())); } var item = GetList().FirstOrDefault(b => b.Name == build); if (item == null) { return(Task.FromResult(RepositoryResult.CreateInvalid())); } _list.Add(item); return(Task.FromResult(RepositoryResult.CreateSuccess())); }); mock.Setup(m => m.UnsubscribeFromBuild(It.IsAny <string>(), It.IsAny <string>())) .Returns <string, string>((user, build) => { var item = _list.FirstOrDefault(b => b.Name == build); if (item == null) { return(Task.FromResult(RepositoryResult.CreateInvalid())); } _list.Remove(item); return(Task.FromResult(RepositoryResult.CreateSuccess())); }); mock.Setup(m => m.GetAllBuilds()) .Returns(Task.FromResult(RepositoryResult <List <RecentBuilds> > .CreateSuccess(GetList()))); mock.Setup(m => m.GetSingleBuild(It.IsAny <string>())) .Returns <string>(b => Task.FromResult(RepositoryResult <RecentBuilds> .CreateSuccess(GetList().First(bb => bb.Name == b)))); return(mock.Object); }