インターネットには、private メソッドの単体テスト ケースを書くべきではないというページがあふれています。しかし、単体テスト ケースのプライベート メソッドを完全に無視する必要があると言うのが正しいかどうかはわかりません。メインの public メソッドをテストすれば、最終的にテストされることはわかっています。しかし、データベースにヒットし、データセットからオブジェクトを設定するメソッドがプライベート メソッドに含まれていると想像してください。データベースにモックを使用したい場合は、このメソッドの単体テスト ケースを作成する必要があり、それを公開する必要があります。そのような状況をどのように克服しますか?
以下は私のパブリックメソッドであるため、ユニットテストケースを作成すると、毎回データベースにヒットします。データベースは常にモックしたい外部依存関係であるため、これは避けたいです。DB を使用する際のもう 1 つの問題は、sysid が db に存在するまで機能する単体テスト ケースから sysid をハードコーディングしているとします。そのレコードが db から削除されると、テスト ケースは役に立たなくなります。
public Order RetrieveOrderAndOrderItem()
{
DataSet ordersDS = new DataSet();
Order obj = new Order();
OrdersDb.RetrieveOrders(conKey,companySysId,userSysId,orderId,ordersDS);
obj = populateObjFromDb(ordersDS,orderItemId, orderItemSubType);
return obj;
}
private Order populateObjFromDb(DataSet orders,int orderItemId, int orderItemSubType)
{
Order orderObj = new Order();
orderObj.OrderId = Converters.DBInt(orders.Tables[0].Rows[0]["OrderId"]);
return orderObj;
}