저는 nSubstitute를 처음 사용합니다. 그리고 컨트롤러 클래스에 대한 테스트 메소드를 작성하고 있습니다. 나는 내 컨트롤러 클래스는 아래와 같이 매개 변수화 된 생성자를 가지고 있기 때문에 대체 클래스 가진대체 클래스에서 Controller 클래스의 매개 변수로 Interface를 전달하는 방법
[TestMethod]
public void GetDefaultStateTest()
{
var _GetDefaultState = Substitute.For<CustomerController>(ICustomer cus);
Assert.IsNotNull(_GetDefaultState.GetDefaultState());
}
아래와 같이 GetDefaultStateTest()라는 TestMethod 있습니다.
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);
이 문제를 해결하는 방법.