これは私のテストです
[TestClass]
public class RepositoryTests
{
private APurchaseOrderRepository _repository;
[TestInitialize]
public void TestInitialize()
{
_repository = new FakePurchaseOrderRepository();
}
[TestMethod]
public void RepositoryGetPurchaseOrdersForStoreCallsValidatePurchaseOrders()
{
var store = new Store();
var mockRepo = new Mock<APurchaseOrderRepository>();
mockRepo.Protected().Setup("ValidatePurchaseOrders", ItExpr.IsAny<List<PurchaseOrder>>());
_repository.GetPurchaseOrders(store);
mockRepo.Protected().Verify("ValidatePurchaseOrders", Times.Once(), ItExpr.IsAny<List<PurchaseOrder>>());
}
}
APurchaseOrderRepositoryとそのインターフェイスは次のようになります
public interface IPurchaseOrderRepository
{
List<PurchaseOrder> GetPurchaseOrders(Store store);
}
public abstract class APurchaseOrderRepository : IPurchaseOrderRepository
{
public abstract List<PurchaseOrder> GetPurchaseOrders(Store store);
protected virtual bool ValidatePurchaseOrders(List<PurchaseOrder> purchaseOrders)
{
return true;
}
}
そして私の偽物
public class FakePurchaseOrderRepository : APurchaseOrderRepository
{
public override List<PurchaseOrder> GetPurchaseOrders(Store store)
{
var purchaseOrders = new List<PurchaseOrder>();
ValidatePurchaseOrders(purchaseOrders);
return purchaseOrders;
}
}
ただし、私のテストは次の場合に失敗します。
テストメソッドPreSwapTests.RepositoryTests.RepositoryGetPurchaseOrdersForStoreCallsValidatePurchaseOrdersが例外をスローしました:Moq.MockException:モックでの呼び出しが1回期待されていましたが、0回でした:mock => mock.ValidatePurchaseOrders(It.IsAny())
構成されたセットアップ:mock => mock.ValidatePurchaseOrders(It.IsAny())、Times.Never呼び出しは実行されません。
私は何が間違っているのですか?
ノート:
- Moq.4.0.10827
アップデート:
2番目の引数としてパラメータを追加する必要があるため、この行だと思いますがmockRepo.Protected().Setup("ValidatePurchaseOrders");
、正しく取得できないようです。
更新2:いくつかの変更を加えましたが、コンパイルされますが、正しくカウントされていません...または何か、エラーメッセージとコードの両方が上記で更新されています。