我正在从 Python/Django 切换到 Go。在 Django 中,我非常喜欢它的模块化应用程序项目结构设计,其中每个应用程序都有单独的业务模型、路由和视图。然后,所有应用程序将在中央/项目的主路由系统等内进行通信。
Django项目结构例如:
- myproject
- myproject
- urls.py
- views.py
...
- planner
- urls.py
- views.py
- models.py
...
Run Code Online (Sandbox Code Playgroud)
我试图在Go项目中实现类似的项目设计:
- myproject
- cmd
- api
- main.go
- routes.go
- handlers.go
- planner
- routes.go
- handlers.go
- models.go
Run Code Online (Sandbox Code Playgroud)
摘自 cmd/api/main.go:
package main
...
db, err := sql.Open("pgx", cfg.db.dsn)
...
srv := &http.Server{
Addr: fmt.Sprintf("localhost:%d", app.config.port),
Handler: app.routes()
}
...
Run Code Online (Sandbox Code Playgroud)
摘自 cmd/api/routes.go:
package main
func (app *application) routes() *httprouter.Router {
router := httprouter.New() …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用react-native/expo 和 typescript 开始测试。我使用世博会的基本打字稿模板创建了一个应用程序。
为了开始测试,我遵循了博览会有关使用 Jest 进行测试的文档。我已添加jest-expo和作为开发依赖项,并根据文档react-test-renderer更新了:package.json
{
"main": "node_modules/expo/AppEntry.js",
"scripts": {
"start": "expo start",
...
"test": "jest"
},
"dependencies": {
"expo": "~41.0.1",
"expo-status-bar": "~1.0.4",
"react": "16.13.1",
"react-dom": "16.13.1",
"react-native": "https://github.com/expo/react-native/archive/sdk-41.0.0.tar.gz",
"react-native-web": "~0.13.12"
},
"devDependencies": {
"@babel/core": "^7.9.0",
"@types/jest": "^26.0.23",
"@types/react": "~16.9.35",
"@types/react-native": "~0.63.2",
"@types/react-test-renderer": "^17.0.1",
"jest-expo": "^41.0.0",
"react-test-renderer": "^17.0.2",
"typescript": "~4.0.0"
},
"private": true,
"jest": {
"preset": "jest-expo",
"transformIgnorePatterns": [
"node_modules/(?!(jest-)?react-native|react-clone-referenced-element|@react-native-community|expo(nent)?|@expo(nent)?/.*|react-navigation|@react-navigation/.*|@unimodules/.*|unimodules|sentry-expo|native-base|@sentry/.*)"
]
}
}
Run Code Online (Sandbox Code Playgroud)
这是测试,App.test.tsx:
import renderer from 'react-test-renderer';
import App from …Run Code Online (Sandbox Code Playgroud) 我有一个基本的反应本机/博览会模板应用程序。我已经在开发依赖项中添加了jest-expo和,并且还更新了 package.json,如用于测试的 expo 文档中记录的那样。react-test-renderer
{
"main": "node_modules/expo/AppEntry.js",
"scripts": {
...
"test": "jest"
},
"dependencies": {
"expo": "~41.0.1",
...
"react": "16.13.1",
"react-native": "https://github.com/expo/react-native/archive/sdk-41.0.0.tar.gz",
},
"devDependencies": {
"@babel/core": "^7.9.0",
"@testing-library/jest-native": "^4.0.1",
"@testing-library/react-native": "^7.2.0",
"jest-expo": "^41.0.0",
"react-test-renderer": "^17.0.2"
},
"private": true,
"jest": {
"preset": "jest-expo",
"transformIgnorePatterns": [
"node_modules/(?!(jest-)?react-native|react-clone-referenced-element|@react-native-community|expo(nent)?|@expo(nent)?/.*|react-navigation|@react-navigation/.*|@unimodules/.*|unimodules|sentry-expo|native-base|@sentry/.*)"
],
"setupFilesAfterEnv": [
"@testing-library/jest-native/extend-expect"
]
}
}
Run Code Online (Sandbox Code Playgroud)
我还添加了React Native Testing Library测试 UI 的功能。并且测试运行良好。
但问题是 WebStorm IDE 无法识别 Jest 及其功能。
你能帮我解决这个问题吗?
更新
根据评论,我尝试通过“设置”配置安装 Typescript Jest 类型定义,并尝试使用“yarn/npm”进行安装。但这没有帮助。
另一个更新
但是,如果我取消选中项目的 node_modules …
webstorm jestjs react-native expo react-native-testing-library
jestjs ×3
react-native ×3
expo ×2
go ×1
react-native-testing-library ×1
typescript ×1
webstorm ×1