10月16, 2016

在你的项目中编写测试-TypeScript

前言

这篇文章的原作者感觉有一些不太适合或者过期的地方,已经修正,代码放入了我的 github 中,运行成功后的代码,大家如果能直接下载看懂,就不用看文章了~节约时间嘛,如果想看看文章的可以继续。

测试源码

这篇文章和之前写的 TypeScript + TDD 那篇不一样的是更加简单,直接测试,不需要其他什么多余配置。

开始

TypeScript 是让我着迷的,我最近需要开始准备使用 TypeScript 来编写项目,并且需要测试。在这篇文章中,我将解释如何开始一个简单的测试,在我们使用 TypeScript 来编写的时候,其中,我们能使用 TypeScript 的 import 语法,以及类型接口来帮助我们。

我们有大量的 JavaScript 测试工具和框架,比如:mochajasmine等等。主要是 BDD/TDD 的方式来运行测试。他们能使使用 node 自己的assert(断言)库, 或者其他扩展的断言库,比如 chai。我当前实现选择的是 mocha 和 chai,因为他们和我想要的一样,容易配置和运行 TypeScript 的测试。我是尝试过 Jasmine 但是我不能像我想的那样工作(可能是因为我缺乏如何使用的窍门)。如果能使用 Jasmine 来配置,将是很棒的。

值得注意的是:以下的是跨平台的,因此只要你在代码中看到 $ 标记,表示是运行在你的终端中,比如 Mac 的 TerminalUbuntu/Linux 的 ShellWindows 的 CommandPrompt/PowerShell 之中。

安装开发依赖(development dependencies)

我是使用 mocha 作为我们的测试框架或者测试运行器,以及 chai 作为我们的断言库。我们将使用第三方库 ts-node 帮助我们运行 TypeScript 的测试。我们将它们作为开发依赖进行全局安装。

$ npm install mocha chai ts-node typescript --save-dev

安装类型定义文件(type definitions)

在我们写 TypeScript 测试之前(后面就不这样翻译了,直接翻译成测试吧,比较和语言不想关联太多),对于我们的测试框架和断言库,他们是有点讨厌类型声明,真是这样么?让我们用 typings 来做这个事。尽管你可能用过这个开发 TypeScript。它是一个定义类型的管理者,用来做 TypeScript 的类型判断。让我们现在来安装它:

$ npm install typings --save-dev

现在我们装好了 typings, 让我们开始建立一些必要的类型定义。我们将 mocha 作为全局模块(我们在使用它的时候不需要导入),以及 chai 直接依赖(我们需要在测试中导入它)。我们将从 DefinitelyTyped 安装 mocha 的类型定义,这是一个类型定义的库,然后我们将使用 npm registry 来安装 chai 的类型定义.

/* 不按这种方式了,不好用,使用接下来的方式 */
$ typings install dt~mocha --global --save
$ typings install npm~chai --save

在 TypeScript 2.0 中,我们能够用其他方式来添加类型定义,因此我们也能够用下面的方式来替代之前提到的 typings 安装的方式。新的方式不依赖 typings npm package 或者 module(包和模块).我们将使用下面的命令:

$ npm install @types/chai @types/mocha --save-dev

开始写我们的第一个 TypeScript 测试

为了解释测试,让我写一些基本的 hello world 函数。我只测试一个 function,因此我是指需要创建一个返回 "Hello World" 字符串的函数。

/* src/hello.ts */
export function hello(): string {
  return "Hello World!";
}

export default hello;

让我们写一个测试,现在我们需要一个测试方法:

/* src/__test__/hello-test.ts */
import hello from "../hello";
import { expect } from "chai";
import "mocha";

describe("Hello function", () => {
  it("should return hello world", () => {
    const result = hello();
    expect(result).to.equal("Hello World!");
  });
});

运行我们的测试

让我们使用 nom run test 来运行我们的测试。我们只需要调用 mochats-node。编辑 package.json

{
  "scripts": {
    "test": "./node_modules/.bin/mocha -r ./node_modules/ts-node/register src/__test__/**/*.ts"
  },
}

我只给 mocha 注册了 ts-node,以及最后参数是定义 mocha 应该运行测试的 src 文件夹中的 test.ts。你能够根据你的项目情况进行修改。

简单的测试结果:

测试结果

原文出自:https://journal.artfuldev.com/write-tests-for-typescript-projects-with-mocha-and-chai-in-typescript-86e053bdb2b6#.n41jb19wz

本文链接:http://www.60sky.com/post/typescript-simple-test.html

-- EOF --

Comments