public async Task AddItemToAsync_ShouldCreateAnItemInDatabase_ThenReturnsAFullyLoadedItem() { const int itemId = 25; const int characterId = 10; var itemTemplateId = Guid.NewGuid(); var itemData = new ItemData(); var itemTemplate = new ItemTemplate(); var request = new CreateItemRequest { ItemData = itemData, ItemTemplateId = itemTemplateId }; var createdItem = new Item { Id = itemId }; var fullyLoadedItem = new Item(); _unitOfWorkFactory.GetUnitOfWork().ItemTemplates.GetAsync(itemTemplateId) .Returns(itemTemplate); _itemFactory.CreateItem(ItemOwnerType.Character, characterId, itemTemplate, itemData) .Returns(createdItem); _unitOfWorkFactory.GetUnitOfWork().Items.GetWithAllDataAsync(itemId) .Returns(fullyLoadedItem); var actualItem = await _service.AddItemToAsync(ItemOwnerType.Character, characterId, request); Received.InOrder(() => { _unitOfWorkFactory.GetUnitOfWork().Items.Add(createdItem); _unitOfWorkFactory.GetUnitOfWork().SaveChangesAsync(); }); actualItem.Should().BeSameAs(fullyLoadedItem); }