///
///
/**
* @description 测试套件模块,用以定义管理测试套件
*
* 使用方法 :
*
* ```JavaScript
* var test = require('test');
* test.setup();
*
* describe('test', () => {
* before(() => {
* // setup before the whole test
* });
*
* beforeEach(() => {
* // setup before each test
* });
*
* after(() => {
* // cleanup after the whole test
* });
*
* afterEach(() => {
* // cleanup after each test
* });
*
* it('case', () => {
* assert.ok(true);
* });
*
* // ignored test case
* xit('case', () => {
* assert.ok(true);
* });
*
* // ignored test case
* it.skip('case', () => {
* assert.ok(true);
* });
*
* // only test case
* oit('case', () => {
* assert.ok(true);
* });
*
* // only test case
* it.only('case', () => {
* assert.ok(true);
* });
* });
*
* // async function test
* describe('test async', () => {
* it('pass case', async() => {
* assert.ok(true);
* });
*
* it('error case', async() => {
* throw new Error('some thing wrong!');
* });
* });
*
* // callback function test
* // cannot use callback mode in jsc
* describe('test callback', () => {
* it('pass case', done => {
* setTimeout(() => {
* assert.ok(true);
* done();
* }, 0);
* });
*
* it('error case', done => {
* setTimeout(() => {
* done(new Error('some thing wrong!'));
* }, 0);
* });
*
* it('check in done', done => {
* setTimeout(() => {
* done(() => {
* assert.ok(true);
* });
* }, 0);
* });
* });
*
* process.exit(-test.run(console.DEBUG));
* ```
*
*/
declare module 'test' {
/**
* @description 定义一个测试模块,可嵌套定义
* @param name 定义模块名称
* @param block 模块初始化代码
*
*/
function describe(name: string, block: (...args: any[])=>any): void;
/**
* @description 暂停测试的模块定义,test.setup 后可使用 describe.skip 调用
* @param name 定义模块名称
* @param block 模块初始化代码
*
*/
function xdescribe(name: string, block: (...args: any[])=>any): void;
/**
* @description 独立测试的模块定义,test.setup 后可使用 describe.only 调用
* @param name 定义模块名称
* @param block 模块初始化代码
*
*/
function odescribe(name: string, block: (...args: any[])=>any): void;
/**
* @description 定义一个测试项目
* @param name 定义项目名称
* @param block 测试内容
*
*/
function it(name: string, block: (...args: any[])=>any): void;
/**
* @description 暂停测试的项目定义,test.setup 后可使用 it.skip 调用
* @param name 定义项目名称
* @param block 测试内容
*
*/
function xit(name: string, block: (...args: any[])=>any): void;
/**
* @description 独立测试的项目定义,test.setup 后可使用 it.only 调用
* @param name 定义项目名称
* @param block 测试内容
*
*/
function oit(name: string, block: (...args: any[])=>any): void;
/**
* @description 定义当前测试模块进入事件
* @param func 事件函数
*
*/
function before(func: (...args: any[])=>any): void;
/**
* @description 定义当前测试模块退出事件
* @param func 事件函数
*
*/
function after(func: (...args: any[])=>any): void;
/**
* @description 定义当前测试模块测试项目进入事件
* @param func 事件函数
*
*/
function beforeEach(func: (...args: any[])=>any): void;
/**
* @description 定义当前测试模块测试项目退出事件
* @param func 事件函数
*
*/
function afterEach(func: (...args: any[])=>any): void;
/**
* @description 开始执行定义的测试模块
* @param loglevel 指定进行测试时的日志输出级别,ERROR 时,项目报错信息集中在报告后显示,低于 ERROR 时,输出信息随时显示,高于 ERROR 时,只显示报告
* @return 返回测试用例统计结果,正确则返回 0,错误则返回错误个数
*
*/
function run(loglevel: number): number;
/**
* @description 断言测试模块,如果测试值为假,则报错,报错行为可设定继续运行或者错误抛出
*/
const assert: typeof import ('assert');
/**
* @description 初始化当前脚本的测试环境,将 test 模块方法复制为当前脚本全局变量
*/
function setup(): void;
/**
* @description 设置和查询慢速测试警告阀值,以 ms 为单位,缺省为 75
*
*/
var slow: number;
}