【问题标题】:How can I use jasmine with a server-side typescript project?如何在服务器端打字稿项目中使用 jasmine?
【发布时间】:2017-05-16 03:41:55
【问题描述】:

我有一个项目,其中包含我的应用程序的服务器和客户端的模块,每个模块都是使用 webpack 构建的。我正在使用 Karma 和 Jasmine 来测试我的客户端(使用 Angular),我想使用 Jasmine 来测试服务器,它也是用 typescript 编写的。

不幸的是,我能在网上找到的唯一指南使用的是 jasmine-node(在过去的几年里没有被触及)而不是 jasmine-npm。谁能建议我可以使用 Jasmine 或替代方法在我的项目中进行测试?

我尝试过编写jasmine.json 文件,或使用init cli 命令编辑由jasmine 生成的文件,但这似乎不适用于打字稿文件。

目前,我的项目结构是这样的:

├── client
│   ├── karma.conf.js
│   ├── protractor.conf.js
│   ├── src
│   ├── tsconfig.json
│   └── webpack.config.js
├── server
│   ├── src
│   ├── tsconfig.json
│   └── webpack.config.js
└── node_modules

【问题讨论】:

  • 我也在寻找解决方案。我很惊讶找到这方面的信息是如此之难。

标签: node.js typescript testing jasmine


【解决方案1】:

绝对可以使用 jasmine 进行服务器端测试。按照这些步骤,你会没事的:

1) 在您的 package.json 中添加以下开发依赖项:

"jasmine": "latest",
"jasmine-core": "latest",

2) 设置您的 jasmine.json,使其包含您要运行测试的所有文件等。

{
  "spec_dir": "dist/dev/server/spec",
  "spec_files": [
    "unit/server/**/*[sS]pec.js"    
  ],
  "helpers": []
}

3) 添加unit.ts,它将引导您的测试过程:

const Jasmine = require("jasmine");

let j = new Jasmine();

j.loadConfigFile("./jasmine.json");
j.configureDefaultReporter({
    showColors: true
});
j.execute();

现在您所要做的就是在 nodejs 中编译并运行生成的 unit.js

【讨论】:

  • 我理解正确吗?我应该将 unit.ts 编译为单独的工件以运行以进行测试,因为 jasmine 不直接支持其他语言?
  • Jasmine 旨在运行您用 js 编写的测试。与 node.js 相同的方式是运行用 js 代码编写的程序。这里的想法是编写一个小 ts 程序来引导 jasmine 和测试过程。
  • 关于使用某种预处理器进行编译的方法的任何提示(就像您在客户端使用 karma 一样)?
  • 您可以像编译项目的其余部分一样编译它(我假设它在 typescript 中) - 直接使用 tsc 或从 gulp/grunt 使用。
猜你喜欢
  • 2020-02-03
  • 1970-01-01
  • 2020-06-20
  • 2020-10-25
  • 1970-01-01
  • 2019-10-16
  • 2017-10-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多