public TodoImplementTests(ITestOutputHelper outputHelper) { this.outputHelper = outputHelper; expectedTodoItems = new List <Todo>() { new Todo { Id = Guid.NewGuid().ToString("N"), Name = "Test1", IsComplete = false }, new Todo { Id = Guid.NewGuid().ToString("N"), Name = "Test2", IsComplete = false }, new Todo { Id = Guid.NewGuid().ToString("N"), Name = "Test3", IsComplete = false } }; uowMoq = new Mock <IUnitOfWork>(); // ITodoItemRepositoryのメソッドのダミーメソッドを設定する todoItemRepoMoq = new Mock <ITodoItemRepository>(); // FindAllAsyncのダミーのReturnをReturnsAsyncで設定 todoItemRepoMoq.Setup(x => x.FindAllAsync()).ReturnsAsync(expectedTodoItems); // ダミーメソッドに引数がある場合はIt.IsAny<引数の型>()で指定する todoItemRepoMoq.Setup(x => x.FindAsync(It.IsAny <String>())) .ReturnsAsync((String id) => expectedTodoItems.Find(x => x.Id == id)); // ダミーメソッドの中身を書き換える場合はCallbackでoverrideする todoItemRepoMoq.SetupAsync(x => x.Add(It.IsAny <Todo>())) .Callback <Todo>(item => { expectedTodoItems.Add(item); // #region Implementから受け取った値を登録するだけ }); // todoItemRepoMoq.SetupAsync(x => x.Add(It.IsAny<Todo>())).Returns(lastCreatedTodoItem); todoItemRepoMoq.SetupAsync(x => x.Update(It.IsAny <Todo>())) .Callback <Todo>(item => { var index = expectedTodoItems.FindIndex(x => x.Id == item.Id); expectedTodoItems[index] = item; }); todoItemRepoMoq.SetupAsync(x => x.Remove(It.IsAny <Todo>())) .Callback <Todo>(item => expectedTodoItems.Remove(item)); todoItemRepoMoq.Setup(x => x.Count()).Returns(expectedTodoItems.Count); uowMoq.Setup(x => x.TodoItems).Returns(todoItemRepoMoq.Object); implement = new TodoImplement(uowMoq.Object); }
public static void Main(string[] args) { const int PORT = 5000; var todoImplement = new TodoImplement(new UnitOfWork()); var server = new Server { Services = { TodoService.BindService(todoImplement) }, Ports = { new ServerPort("0.0.0.0", PORT, ServerCredentials.Insecure) } }; server.Start(); Console.WriteLine("gRPC Todo server listening on port " + PORT); Console.WriteLine("Press any key to stop the server..."); Console.Read(); server.ShutdownAsync().Wait(); // CreateWebHostBuilder(args).Build().Run(); }