javascript - 在 Typescript 源代码与生成的 JavaScript 上运行测试

标签 javascript typescript testing mocha.js continuous-deployment

在一个 Web 项目中,TypeScript 用于对整个应用程序、前端和后端以及测试进行编程。然后将其全部编译并部署为 JavaScript;
在部署期间运行测试需要什么。直接在 TypeScript 源代码上运行它是否更有意义?或者在生成的 JavaScript(稍后部署到服务器)上运行它是否更有意义
请记住,根据它在哪个平台上运行,它对代码覆盖率报告之类的事情有一些小的影响。
一种思想流派是在 TypeScript 源代码上运行它,因为这是程序员正在生成的并且可以直接控制的内容。
另一方面,在部署后最终运行的是 JavaScript 生成的代码。
这有一个公认的模式吗?

最佳答案

我曾经测试过它的 js 编译代码,但后来我发现在 Typescript 文件上运行测试更有意义。主要原因是如果任何测试失败,调试更容易因为我们在同一个 Typescript 文件上进行编码和测试。
以下是调试失败测试的示例:
⚠️ 见 expect在 Typescript 和编译的 Javascript 中存在差异的行号
测试.ts

import { expect } from 'chai';

describe('sum', () => {
  it('should return 3', () => {
    expect(2 + 1).to.equal(2); // line 5
  })
})
和它的js编译
"use strict";
exports.__esModule = true;
var chai_1 = require("chai");
describe('a', function () {
    it('should return a', function () {
        chai_1.expect(2 + 1).to.equal(2); // line 6, different number to its source code
    });
});
使用 ts-mocha 对 Typescript 文件的测试结果显示第 5 行的正确有问题的行号
sum
    1) should return 3


  0 passing (12ms)
  1 failing

  1) sum
       should return 3:

      AssertionError: expected 3 to equal 2
      + expected - actual

      -3
      +2
      
      at Context.<anonymous> (mocha/65152263/a.test.ts:5:22) <--- Match with Typescript source code ✅
      at processImmediate (internal/timers.js:439:21)
同时,对于 js 测试结果,它会给你第 6 行。😫
对于一个小的测试文件,找到问题可能不会太麻烦,但如果我们有很多测试,那就不是很好了。

关于javascript - 在 Typescript 源代码与生成的 JavaScript 上运行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65138306/

相关文章:

angular - Typescript 错误 - Angular AoT 构建失败 - Node.js + Ionic 移动应用程序

css - 当计算出的宽度不准确时,如何在柏树中测试元素的宽度?

javascript - 如何从 Javascript 连接到 XMPP 服务器

javascript - AngularJS : testing a factory that returns a promise, 在模拟使用 $http 的服务时

javascript - Rangeslider.js mousedown 事件不适用于 slider 按钮

javascript - 通过 Angular 在 json 对象中显示列表的最佳方法

node.js - 在 Linux Mint 上运行 TypeScript 编译器时出现 "require.paths is removed"错误

spring - @PostConstruct 和在配置类中使用 new 创建的 bean

testing - 差异系统验收测试和用户验收测试

javascript - 在 React 中使用对象数组作为 props