یک نکتهی تکمیلی: روش آزمایش کردن یک کنترلر MVC
فرض کنید میخواهید یک قطعه کد به شکل زیر را آزمایش کنید:
public class WeatherForecastController : ControllerBase
اگر از روش فوق استفاده کنید، آزمون واحد در سطر زیر با شکست مواجه میشود:
Assert.IsTrue(outputCompilation.GetDiagnostics().IsEmpty)
چون این سطر، بیانگر خطاهای کامپایلر است که خالی نیست و نتوانسته ارجاعات پروژه را بازیابی کند. برای رفع این مشکل، در متد کمکی RunGenerators که تهیه شد، باید ارجاعات زیر را به ارجاعات موجود، اضافه کرد:
references = references.Concat(new[]
{
MetadataReference.CreateFromFile(typeof(ControllerBase).GetTypeInfo().Assembly.Location),
MetadataReference.CreateFromFile(typeof(IActionResult).GetTypeInfo().Assembly.Location)
});
و همچنین جهت شناسایی آنها باید تعریف زیر را نیز به فایل csproj. پروژهی آزمون واحد، اضافه کرد:
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App"/>
</ItemGroup>
</Project>
به علاوه میتوان نوع خروجی را هم بجای یک برنامهی کنسول، به یک dll. تغییر داد:
new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary)