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



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Да, вы можете это сделать. Вы можете взглянуть на содержимое файла 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"
},
Так что в зависимости от того, что вам нужно, вы можете добавить шаг к этапу публикации.
Найдено мной на основе ответа @Тони:
В файле 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"
},
Спасибо, это работает, но тесты запускаются только при публикации проекта; вместо этого я бы запускал тесты на каждой сборке.