public async Task AddItemAsync_validText_returnsNewItemWithIdAndCorrectProperties() { var id = Guid.NewGuid(); var text = "text of new item"; var expectedItem = new Item { Id = id, Text = text, }; Item storedItem = null; _identifierService.GenerateIdAsync().Returns(id); _itemsRepository.AddAsync(Arg.Do <Item>(item => { storedItem = item; })).Returns(Task.CompletedTask); var newItem = await _itemsService.AddItemAsync(expectedItem); Assert.That(storedItem, Is.EqualTo(expectedItem).UsingItemComparer()); Assert.That(newItem, Is.EqualTo(expectedItem).UsingItemComparer()); }