reactjs - Visual Studio 2019 测试资源管理器中的 Jest 单元测试
问题描述
我使用dotnet new react
. npm test
然后我添加了一些 Jest 单元测试,当我在命令行上运行时它们运行良好。
我希望能够使用测试资源管理器窗口或 ReSharper 从 Visual Studio 2019 运行测试。
首先,ReSharper 似乎只支持 Jasmine 而不是 Jest(ReSharper 文档,功能请求)。
所以我尝试使用测试资源管理器,遵循这个官方指南。它支持 Jest。但是,ASP.NET Core 的 React 模板不是 node.js 项目,因此测试框架等选项不可用。因此,Test Explorer 找不到任何测试。
然后我尝试使用命令运行测试vstest.console.exe MyProject.csproj /TestAdapterPath:"C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\Extensions\Microsoft\NodeJsTools\TestAdapter"
。输出给了我一些希望:
Microsoft (R) Test Execution Command Line Tool Version 16.5.0
Copyright (c) Microsoft Corporation. All rights reserved.
Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
No test is available in MyProject.csproj. Make sure that test
discoverer & executors are registered and platform & framework version settings are appropriate and
try again.
测试运行器找到至少一个测试文件(实际上我有 2 个),但它不知道它应该使用 Jest 执行器。我可以在 .csproj 文件中添加一些东西以使其工作吗?
解决方案
这就是我开始.njsproj
工作的方式。我也希望能出.csproj
作品。首先创建一个新Blank Node.js Console Application
的TypeScript
. 也经过测试JavaScript
并且可以正常工作。
创建一个名为 tests 的文件夹并添加JavaScript Jest UnitTest file
:
找不到“jest”包。“jest”必须安装在本地项目中。通过解决方案资源管理器使用 npm 管理器或通过 Node.js 交互式窗口使用“.npm install jest --save-dev”在本地安装“jest”。找不到“jest-editor-support”包。“jest-editor-support”必须安装在本地项目中。通过解决方案资源管理器使用 npm 管理器在本地安装“jest-editor-support”,或者通过 Node.js 交互式窗口使用“.npm install jest-editor-support --save-dev”安装“jest-editor-support”。
然后从 VS 2019 的开发人员命令提示符运行以下命令:
vstest.console.exe "C:\Users\Oscar\source\repos\NodejsConsoleApp1\NodejsConsoleApp1\NodejsConsoleApp1.njsproj" "/TestAdapterPath:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\Extensions\Microsoft\NodeJsTools\TestAdapter"
已安装jest
并jest-editor-support
具有依赖类型Development
。
完成此操作后,可以运行测试:
测试现在也将显示在测试资源管理器中:
然后重命名UnitTest1.js
为UnitTest1.ts
. 您应该看到以下错误:
安装@types/jest
为开发依赖项,它应该可以工作:
我不必指定这一点,但如果出现问题,请检查项目属性并设置 JavaScript 单元测试值。
还要检查测试文件的属性,如果通过 GUI 添加这些值,默认情况下应该是正确的。
推荐阅读
- ssl - 在 tomcat 8 中启用 SSL
- python - 从谷歌存储桶下载文件
- php - php artisan migrate 没有做任何事情
- excel - 多个期间的天数,减去任何重叠
- xamarin - Xamarin Forms Prism MVVM 嵌套 TabbedPage 问题
- python - Python dash服务器未更新
- javascript - 遵循 tween.js 的路径
- c++ - 如何将 VB.Net 字符串作为 char* 传递给 C++ dll?
- verilog - 使用 Quartus 2 设计环形振荡器
- ionic-framework - Ionic 4 CDN 和 VueJS 按钮样式不起作用