0

無効なリポジトリをテストしたい。このような私のサービスクラス。

public class AccountService
{
    private readonly IAccountRepository accountRepository;

    public AccountService(IAccountRepository accountRepository)
    {
        this.accountRepository = accountRepository;
    }

    public User GetById(string userId)
    {
        User user = accountRepository.GetById(userId);

        if (user == null)
            throw new UserNotFoundException();

        return user;
    }

    public void Add(User user)
    {
        accountRepository.Add(user);
    }
}

私のテストクラスでは、FakeItEasy ツールを使用して偽のリポジトリを作成しました。

[TestFixture]
public class AccountServiceTests
{
    private IAccountRepository repository;
    private AccountService service;

    private  string ValidUserId = "aaa";
    private  string InvalidUserId = "xxx";

    private List<User> getUsers()
    {
        return new List<User> {new User {UserId = ValidUserId}};
    }

    private readonly User newUser= new User();

    [SetUp]
    public void Setup()
    {
        repository = A.Fake<IAccountRepository>();
        service = new AccountService(repository);

        A.CallTo(() => repository.GetById(ValidUserId))
            .Returns(new User{UserId = ValidUserId});

        A.CallTo(() => repository.GetById(InvalidUserId))
            .Returns(null);

        A.CallTo(() => repository.Add(A<User>.Ignored))
            .???
    }

    [Test]
    public void GetUser_ValidUserId_ReturnsUser()
    {
        User user = service.GetById(ValidUserId);

        Assert.IsNotNull(user);
        Assert.AreEqual(ValidUserId, user.UserId);
    }

    [Test, ExpectedException(typeof(UserNotFoundException))]
    public void GetUser_InValidUserId_ThrowsUserNotFoundException()
    {
       service.GetById(InvalidUserId);
    }

    [Test]
    public void Add_User_AddsUser()
    {
        service.Add(newUser);
    }
}

GetUser メソッドを正常にテストできます。しかし、サービス クラスで Add メソッドをテストできません。何も返さないからです。または、ステータスをチェックするユーザーを含むリストがサービス クラスにありません。この void メソッドのテストについて、何をお勧めしますか?

4

1 に答える 1