私の問題を手伝ってください。私は以下の通りであるサービスクラスを持っている:Mock C#を使用して、サービスクラスの特定のメソッドをどのようにテストできますか?
public class RateService:IRatesService
{
...
public RatesDTO GetById(int Id)
{
return Mapper.Map<Rates, RatesDTO>(this.db.Rates.GetAll().Where(m => m.RateId == Id).First());
}
}
コードのサンプルのようなインターフェースIRatesServicelooks:
public interface IRatesService
{
.....
RatesDTO GetById(int Id);
....
}
そして今、私は公共RatesDTO GetById(int型同上)メソッドをテストしてみてください。私のコードは以下の通りである:
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
Mock<IRatesService> mock = new Mock<IRatesService>();
mock.Setup(m => m.GetById(It.IsAny<int>())).Returns<RatesDTO>(total=>total);
Assert.IsNotNull(mock.Object.GetById(1));
}
}
しかし、私は、テストを実行すると、私はこのようなエラーが出る:
テスト名:TestMethod1テスト
フルネーム:Provider.Tests.Services.UnitTest1.TestMethod1結果メッセージ:
試験方法Provider.Tests.Services.UnitTest1.TestMethod1は 例外をスロー:System.ArgumentExceptio n:詳細は、 типа "System.Int32"ктипу "Provider.BLL.DTO.RatesDTO"を参照してください。
サービスのクラスとメソッドをテストするベストプラクティスは何ですか?
RateServiceをテストする場合は、具体的なクラスをテストする必要があります。モックしないようにしてください。モックは、クラスを独立してテストしたいので、クラスに依存するオブジェクトをモックする場合に存在します。 – YuvShap