public void ShouldCreateProject(string name, ProjectId nextIdentity, Guid resultIdentity) { "Given name" .x(() => name = "project name"); "And project repository that returns next identity".x(() => { nextIdentity = ProjectId.New(); _projectRepositoryMock .Setup(x => x.GetNextIdentity()) .Returns(nextIdentity); }); "When I create project" .x(() => resultIdentity = _sut.CreateProject(name)); "Then project repository should save the project" .x(() => _projectRepositoryMock.Verify(x => x.Save(It.IsAny <Project>()))); "And project identity should be returned" .x(() => Assert.Equal(nextIdentity.Value, resultIdentity)); "And saved project should have valid name and identity".x(() => { Assert.Equal(nextIdentity, _savedProject.GetState().ProjectId); Assert.Equal(name, _savedProject.GetState().Name.Value); }); }