【发布时间】:2014-09-17 13:31:28
【问题描述】:
我有一个类说 ChatService,我有一个名为 JoinRoom() 的方法返回 void。此方法将用户及其连接详细信息作为参数,并将用户与其连接详细信息一起保存到数据库中,或者如果用户已存在于数据库中,则将用户的连接详细信息添加到数据库中,然后引发事件取决于任何一种情况。我想测试一下这个方法:
- 保存新用户及其连接详细信息(针对新用户)
- 保存现有用户的连接详细信息。
- 当上述任一操作成功时引发事件。
我已经进行了测试,检查用户及其连接是否正确保存,并检查事件是否正确引发。示例:
[Fact]
public void user_should_be_created_and_added_to_the_room_if_user_does_not_exist()
{
chatService.JoinRoom(validConnectionId, validRoom, validUsername);
Assert.False(userExist);
Assert.True(repository.AddUserCalled);
}
[Fact]
public void then_connection_should_be_added_for_an_existing_user()
{
repository.AddUser(new User(validUsername, userpix));
repository.AddUserCalled = false;
chatService.JoinRoom(validConnectionId, validRoom, validUsername, userpix);
Assert.False(repository.AddUserCalled);
Assert.True(repository.ConnectionAdded);
Assert.Equal(1, repository.NoOfConnectionAdded);
}
我有单独的测试来检查事件是否被正确引发,但我担心在我的假存储库上断言是否正确,或者,如果存储库充当存根,然后我应该断言事件是否是提高。似乎测试关注的是被测方法的内部,如果它是正确的,我不会。
【问题讨论】:
标签: c# unit-testing xunit.net