Moq가 스텁 인스턴스 인 Moq.Object.GetType()을 통해 해당 유형을 전달할 때 Activator.CreateInstance를 통해 동적으로 생성하려는 데이터 클래스를 스텁하기 위해 Moq를 사용하려고합니다. System.MissingMethodException {"No parameterless constructor defined for this object."}
"이 개체에 대해 정의 된 매개 변수없는 생성자가 없습니다."형식에서 인스턴스를 만들려면 moq를 가져올 수 없습니다.
내가 뭘 잘못하고 있니? Moq를 수용하기 위해 주제 코드를 변경하고 싶지 않습니다.
테스트
private Test() ...
{
var recordStub = new Mock<IRecord>();
var record = recordStub.Object;
var recordDefinition = new RecordDefinition()
{ MappedRecordClassType = record.GetType(), ...
var newRecord = CreateDataRecord(recordDefinition);
...
}
당신은 record.GetType()
과에 IRecord
를 구현하는 동적 런타임에 MOQ에 의해 생성 된 객체입니다 record = recordStub.Object
이후 인스턴스를 생성하는
private IRecord CreateDataRecord(RecordDefinition recordDefinition)
{
var result = Activator.CreateInstance(recordDefinition.MappedRecordClassType)
as IRecord;
return result;
}
'MappedRecordClassType'에 매개 변수가없는 기본 생성자가 있습니까? –
MappedRecordClassType은 단순히 System.Type 유형의 매개 변수입니다. 이 유형의 데이터 클래스는 모의 된 것, 즉 새로운 Mock()이므로 생성자는 Moq에서 추정 한 것으로 생성됩니다. –
SuperC0der