Базовый шаблон Visual Studio Asp.net Angular запускает тесты автоматически при сборке

Я создал проект ядра Asp.net + Angular в Visual Studio, используя шаблон «Angular». Возможно ли, чтобы каждая сборка в Visual Studio автоматически запускала тесты Angular (.spec)?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
272
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Да, вы можете это сделать. Вы можете взглянуть на содержимое файла csproj, у него будет этот параметр.

<Target Name = "PublishRunWebpack" AfterTargets = "ComputeFilesToPublish">
    <!-- As part of publishing, ensure the JS resources are freshly built in production mode -->
    <Exec WorkingDirectory = "$(SpaRoot)" Command = "npm install" />
    <Exec WorkingDirectory = "$(SpaRoot)" Command = "npm run build -- --prod" />
    <Exec WorkingDirectory = "$(SpaRoot)" Command = "npm run build:ssr -- --prod" Condition = " '$(BuildServerSideRenderer)' == 'true' " />

    <!-- Include the newly-built files in the publish output -->
    <ItemGroup>
      <DistFiles Include = "$(SpaRoot)dist\**; $(SpaRoot)dist-server\**" />
      <DistFiles Include = "$(SpaRoot)node_modules\**" Condition = "'$(BuildServerSideRenderer)' == 'true'" />
      <ResolvedFileToPublish Include = "@(DistFiles->'%(FullPath)')" Exclude = "@(ResolvedFileToPublish)">
        <RelativePath>%(DistFiles.Identity)</RelativePath>
        <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
      </ResolvedFileToPublish>
    </ItemGroup>
  </Target>

Поэтому я добавлю еще один шаг в эту конфигурацию, как это

<Exec WorkingDirectory = "$(SpaRoot)" Command = "npm install" />
<Exec WorkingDirectory = "$(SpaRoot)" Command = "npm run test" /> // add this
<Exec WorkingDirectory = "$(SpaRoot)" Command = "npm run build -- --prod" />
<Exec WorkingDirectory = "$(SpaRoot)" Command = "npm run build:ssr -- --prod" Condition = " '$(BuildServerSideRenderer)' == 'true' " />

Вы видите, что я добавляю еще одну команду для запуска теста в package.json.

 "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "build:ssr": "ng run Angular8:server:dev",
    "test": "ng test", // run this command
    "lint": "ng lint",
    "e2e": "ng e2e"
  },

Так что в зависимости от того, что вам нужно, вы можете добавить шаг к этапу публикации.

Спасибо, это работает, но тесты запускаются только при публикации проекта; вместо этого я бы запускал тесты на каждой сборке.

ʞᴉɯ 14.07.2019 18:56
Ответ принят как подходящий

Найдено мной на основе ответа @Тони:

В файле csproj:

  <Target Name = "PreBuild" BeforeTargets = "PreBuildEvent">
    <Exec  WorkingDirectory = "$(SpaRoot)" Command = "npm run test-onbuild" />
  </Target>

и в package.json я добавил это

 "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "test-onbuild": "ng test --watch=false", <=====
    "lint": "ng lint",
    "e2e": "ng e2e"
  },

Другие вопросы по теме