更新 1、詳細
私の質問がわかりにくかったです、すみません…。
簡単な質問... Moq で特定の実装をどのようにテストしますか?
interface IShipping
{
int CalculateCost();
}
class TruckShipping: IShipping
{
int CalculateCost()
{
return 9;
}
}
class Shipping: IShipping
{
int CalculateCost()
{
return 5;
}
}
class CalculateSomethingMore
{
IShipping _shipping;
CalculateSomethingMore(IShipping shipping)
{
// Here I want the TruckShipping implementation!
_shipping = shipping;
}
DoCalc()
{
return _shipping.CalculateCost * 2;
}
}
モックがなければ、おそらく (DI を使用しない場合) TEST のようになります。
var truckShipping = new TruckShipping();
var advancedCalculation = CalculateSomethingMore(truckShipping);
var result = DoCalc();
var expected = 18;
Assert.IsTrue(result == expected);
NUnit、FluentAssertions、MbUnit、xUnit などは関係ありません :)
テスト: var truckShipping = Mock.Of<IShipping> .... ? TruckShipping の実装をテストしたいと思います。
それを CalculateSomethingMore に注入します。