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);
        }
示例#2
0
        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();
        }