nSubstitute は初めてです。そして、コントローラークラスのテストメソッドを書いています。以下に示すように、Substitute クラスを持つ GetDefaultStateTest() という TestMethod があります。
[TestMethod]
public void GetDefaultStateTest()
{
var _GetDefaultState = Substitute.For<CustomerController>(ICustomer cus);
Assert.IsNotNull(_GetDefaultState.GetDefaultState());
}
私のコントローラークラスは、以下のようにパラメーター化されたコンストラクターを持っているためです。
public class CustomerController : Controller
{
private readonly ICustomer _customer;
public CustomerController(ICustomer customer)
{
_customer = customer;
}
public string GetDefaultState()
{
// Get default state from settings table
List<tblSettings> settings = new List<tblSettings>();
// Calling service method GetSettings
settings = _customer.GetSettings();
var defaultState = from setting in settings
where setting.Desc == "DefaultState"
select setting.Settings;
string strState = "";
foreach (var oState in defaultState)
{
strState = oState;
break;
}
return strState;
}
}
テスト メソッドを実行すると、null 参照の問題が発生します。パラメータ ICustomer が null であるため
var _GetDefaultState = Substitute.For<CustomerController>(ICustomer cus);
この問題を解決する方法。