1

私は、Moq で使用するための優れたテスト可能なリポジトリ クラスを作成しようとしています。GetAllセレクター メソッド ( 、Get、 ...)を複製したくありません。私の実装は正常に動作しますが、SonarSource はエラーRSPEC-1699 を報告します。より良い実装を知っている人はいますか?

var areas = new Area[] { ... };
var areaRepositoryMock = new Mock<BaseAreaRepository>() { CallBase = true };
areaRepositoryMock.Setup(m => m.Initialize()).Returns(areas);

基本クラス

public abstract class BaseAreaRepository
{
    protected Area[] _areas;

    protected BaseAreaRepository()
    {
        this._areas = this.Initialize();
    }

    public abstract Area[] Initialize();

    public Area[] GetAll()
    {
        return this._monitoredAreas;
    }

    public Area Get(int id)
    {
        return this._areas.FirstOrDefault(o => o.Id.Equals(id));
    }
}

MyAreaRepository

public class MyAreaRepository : BaseAreaRepository
{
    public override Area[] Initialize()
    {
        return //Load data from an other source
    }
}
4

2 に答える 2