Хорошо. Догадаться. По сути, вам вообще не нужен обработчик исключений. Вы просто хотите, чтобы он продолжал выпадать, пока не попадет в библиотеки xunit.
На самом деле оказывается, что это важнее, чем я когда-то думал. Если вы не сделаете это правильно, вы не получите правильные ошибки от Continuous Integration.
При первой настройке приложения MVC вам был предоставлен этот маленький кусочек кода
public void Configure(IApplicationBuilder app, IHostingEnvironment env) {
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage(); //This is the problem
}
но вы все еще хотите, чтобы эта строка выполнялась во время обычной разработки. Это помогает иметь довольно html-ошибку со всеми достоинствами JavaScript и CSS.
Так что вы должны переопределить это во время XUNIT. Начните со ссылки от Microsoft, которую я разместил в вопросе.
Это шаблон с
protected override void ConfigureWebHost(IWebHostBuilder builder)
{
builder.ConfigureServices(services =>
//...
но у строителя тоже есть .Configure(app => {});
Но вам все еще нужен MVC для запуска app.UseMvc
внутри оверрайдера Config
. Вам также понадобится переопределитель AddMvc
к ConfigureServices
. Фактически, вы можете вернуться к разработке / производству Startup.cs
и скопировать все строки из функции Configure. По крайней мере, вы должны иметь:
public class CustomWebApplicationFactory<TStartup>
: WebApplicationFactory<TStartup> where TStartup: class
{
protected override void ConfigureWebHost(IWebHostBuilder builder)
{
builder.ConfigureServices(services => { services.AddMvc(); }).Configure(app => { app.UseMvc(); });
}
}
Это помешает запуску ваших методов запуска.
Бьюсь об заклад, большинство людей просто сдался по этому вопросу. Я действительно хочу, чтобы Microsoft опубликовала это.
Редактировать: Посмотрите, как это круто!
Вот оно в действии. Посмотрите на эти гиперссылки. Теперь я могу просто щелкнуть ссылку, и она перейдет прямо в это место в коде. Я на самом деле исправил эту ошибку и вернулся, чтобы исправить ее, чтобы показать всем.