Unable to detect unit tests in project with multiple package.json files

Đang mở
#2,486 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
35/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
angular, csharp, javascript, node.js
Lĩnh vực
testing-qa

Hướng nghiên cứu

Bắt đầu bằng cách tái tạo dự án ASP.NET Core with Angular được mô tả trong issue, bao gồm các tệp package.json ở root và ClientApp, cùng cấu hình JavaScriptTestRoot. Kiểm tra cách tích hợp Microsoft.JavaScript.UnitTest phát hiện các test cho dự án và xác minh kết quả trong Test Explorer. Hoàn thành khi các unit test Karma/Jasmine được phát hiện với cả hai tệp package.json đều hiện diện.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Expected Behavior

Unit tests are found when multiple package.json files exist in the project.

Actual Behavior
  • NTVS Version: 1.5.10610.1
  • Visual Studio Version: 2022 17.7.6
  • Node.js Version: 20.8.1
Steps to Reproduce
  1. Create a project using the ASP.NET Core with Angular template
  2. Add a package.json at the root level of the project, now the folder structure should look as follows (excerpt):
    MyProject/
    ├─ ClientApp/
    │  ├─ package.json
    ├─ Controllers/
    ├─ Pages/
    ├─ wwwroot/
    ├─ package.json
    ├─ Program.cs
    
  3. Edit the project configuration for unit testing with Karma/Jasmine:
<Project Sdk="Microsoft.NET.Sdk.Web">
    <PropertyGroup>
  	  <TargetFramework>net7.0</TargetFramework>
  	  <Nullable>enable</Nullable>
  	  <IsPackable>false</IsPackable>
  	  <SpaRoot>ClientApp\</SpaRoot>
  	  <SpaProxyServerUrl>https://localhost:44445</SpaProxyServerUrl>
  	  <SpaProxyLaunchCommand>npm start</SpaProxyLaunchCommand>
  	  <ImplicitUsings>enable</ImplicitUsings>

  	  <!-- Unit tests -->
  	  <JavaScriptTestRoot>ClientApp\</JavaScriptTestRoot>
  	  <JavaScriptTestFramework>Jasmine</JavaScriptTestFramework>
  	  <GenerateProgramFile>false</GenerateProgramFile>
    </PropertyGroup>

    <ItemGroup>
  	  <PackageReference Include="Microsoft.AspNetCore.SpaProxy" Version="7.0.13" />
  	  <PackageReference Include="Microsoft.JavaScript.UnitTest" Version="1.5.10610.1">
  		  <PrivateAssets>all</PrivateAssets>
  		  <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
  	  </PackageReference>
    </ItemGroup>

    <ItemGroup>
  	  <!-- Don't publish the SPA source files, but do show them in the project files list -->
  	  <Content Remove="$(SpaRoot)**" />
  	  <None Remove="$(SpaRoot)**" />
  	  <None Include="$(SpaRoot)**" Exclude="$(SpaRoot)node_modules\**" />
    </ItemGroup>

    <Target Name="DebugEnsureNodeEnv" BeforeTargets="Build" Condition=" '$(Configuration)' == 'Debug' And !Exists('$(SpaRoot)node_modules') ">
  	  <!-- Ensure Node.js is installed -->
  	  <Exec Command="node --version" ContinueOnError="true">
  		  <Output TaskParameter="ExitCode" PropertyName="ErrorCode" />
  	  </Exec>
  	  <Error Condition="'$(ErrorCode)' != '0'" Text="Node.js is required to build and run this project. To continue, please install Node.js from https://nodejs.org/, and then restart your command prompt or IDE." />
  	  <Message Importance="high" Text="Restoring dependencies using 'npm'. This may take several minutes..." />
  	  <Exec WorkingDirectory="$(SpaRoot)" Command="npm install" />
    </Target>

    <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 -- --configuration production" />

  	  <!-- Include the newly-built files in the publish output -->
  	  <ItemGroup>
  		  <DistFiles Include="$(SpaRoot)dist\**; $(SpaRoot)dist-server\**" />
  		  <ResolvedFileToPublish Include="@(DistFiles->'%(FullPath)')" Exclude="@(ResolvedFileToPublish)">
  			  <RelativePath>wwwroot\%(RecursiveDir)%(FileName)%(Extension)</RelativePath>
  			  <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
  			  <ExcludeFromSingleFile>true</ExcludeFromSingleFile>
  		  </ResolvedFileToPublish>
  	  </ItemGroup>
    </Target>
</Project>
  1. Reload the project
  2. Notice the Test Explorer is unable to find any tests
Ngôn ngữ chính
C#
Star
1.8k
Fork
355
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của microsoft/nodejstools

Tất cả issue của microsoft/nodejstools

Issue tương tự

Thêm issue về C#

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.