나는 save() 메소드를 가지고 있는데, 테스트하는 방법은 잘 모른다. 아래 코드는 내 코드입니다. 저장 방법moq, 저장 방법을 테스트하는 방법은 무엇입니까?
public interface IRepository<T>
{
T Get(int id);
void Save(T item);
void Delete(int id);
}
나는 값을 비교할 수 없습니다, 다시 모든 값을 반환하지 않습니다. 그러나, 나는 이미 4 명의 사용자가 있으며, 다른 사용자를 추가 한 후에는 전체 사용자 수만 검사합니다. 테스트하는 것으로 충분합니까?
[Test]
public void Add_a_new_smoothie_user_should_return_total_5_users()
{
// Arrange
var totalUsers = _users.Count();
_mockUserRepository.Setup(s => s.Save(It.IsAny<User>()))
.Callback((User user) => _users.Add(user));
var newUser = new User
{
Id = 3,
Email = "[email protected]",
Password = "1234567".Hash(),
Firstname = "",
Lastname = "",
CreatedDate = DateTime.Now,
LastLogin = DateTime.Now,
AccountType = AccountType.Smoothie,
DisplayName = "",
Avatar = "",
ThirdPartyId = "",
Status = Status.Approved,
Ip = "127.0.0.1"
};
// Act
_mockUserRepository.Object.Save(newUser);
// Assert
Assert.AreEqual(5, _users.Count());
Assert.AreEqual(1, _users.Count() - totalUsers);
}
'저장'방법을 설명 할 수 있습니까? '코드 적용 범위'가 있습니까? 나는 당신의 모의에 'x'사용자를 추가하는 것이 효과적으로 방법을 검증 할 것이라고 생각하지 않는다. 코드 커버리지가 합리적으로 높아 지도록 모든 플로우 (주, 대안, 예외 등)를 테스트하는 데 집중해야합니다. – Channs
나는 위임을 실행하는 방법을 moq 저장소에 저장하지 않는다. 너 여기서 뭘 시험해?이 테스트에서 실행되는 코드를 공급자가 테스트 할 수 있습니까? – Rafal
내 "저장"방법은 새 사용자를 데이터베이스에 저장하기 만합니다. 나는 아직 코드를 가지고 있지 않다. 단지 인터페이스 일 뿐이다. 난 당신이 먼저 구체적인 테스트 방법을 작성하기 전에 단위 테스트를 작성해야한다고 생각. – qinking126