java 发表于 2017-12-28 18:00:37

wildduck--测试工具

本帖最后由 java 于 2017-12-29 11:31 编辑

---------browsers-----------------
https://www.npmjs.com/package/browserbox

browserboxIMAP client for browsers

github.com/whiteout-io/browserbox


------测试框架Mocha---及断言库 chai-----
Mocha(发音"摩卡")诞生于2011年,是现在最流行的JavaScript测试框架之一,在浏览器和Node环境都可以使用。
安装npm install --global mocha

通常,测试脚本与所要测试的源码脚本同名,但是后缀名为.test.js(表示测试)或者.spec.js(表示规格)。比如,add.js的测试脚本名字就是add.test.js。
// add.test.js
var add = require('./add.js');
var expect = require('chai').expect;

describe('加法函数的测试', function() {
it('1 加 1 应该等于 2', function() {
    expect(add(1, 1)).to.be.equal(2);
});
});

上面这段代码,就是测试脚本,它可以独立执行。测试脚本里面应该包括一个或多个describe块,每个describe块应该包括一个或多个it块。
describe块称为"测试套件"(test suite),表示一组相关的测试。它是一个函数,第一个参数是测试套件的名称("加法函数的测试"),第二个参数是一个实际执行的函数。
it块称为"测试用例"(test case),表示一个单独的测试,是测试的最小单位。它也是一个函数,第一个参数是测试用例的名称("1 加 1 应该等于 2"),第二个参数是一个实际执行的函数。

断言库的用法
npm install --global chai


上面的测试脚本里面,有一句断言。
expect(add(1, 1)).to.be.equal(2);
所谓"断言",就是判断源码的实际执行结果与预期结果是否一致,如果不一致就抛出一个错误。上面这句断言的意思是,调用add(1, 1),结果应该等于2。

所有的测试用例(it块)都应该含有一句或多句的断言。它是编写测试用例的关键。断言功能由断言库来实现,Mocha本身不带断言库,所以必须先引入断言库。
var expect = require('chai').expect;//断言库
断言库有很多种,Mocha并不限制使用哪一种。上面代码引入的断言库是chai,并且指定使用它的expect断言风格。

Mocha的基本用法
有了测试脚本以后,就可以用Mocha运行它。
mocha add.test.js
加法函数的测试
    ✓ 1 加 1 应该等于 2
1 passing (8ms)

http://www.ruanyifeng.com/blog/2 ... al-of-examples.html
http://chaijs.com/
https://github.com/chaijs/chai




java 发表于 2018-1-2 17:22:39

本帖最后由 java 于 2018-1-5 08:57 编辑

测试用例跑法
mocha ./imap-core/test/my-test.js--config=./config/test.toml


sudo提升IDE权限
sudo /usr/share/webstorm/bin/webstorm.sh

java 发表于 2018-1-2 17:53:47

手动命令行测试

----imap测试-------
openssl s_client -connect 127.0.0.1:9993
C: C1 CAPABILITY
S: * CAPABILITY IMAP4rev1 AUTH=PLAIN AUTH=PLAIN-CLIENTTOKEN ENABLE ID SASL-IR
S: C1 OK CAPABILITY completed

C: C3 LOGIN "hcj" "test123"
S: C3 OK hcj authenticated

C: C6 STATUS "Trash" (MESSAGES RECENT UIDVALIDITY)
S: * STATUS "Trash" (MESSAGES 1 RECENT 0 UIDVALIDITY 1514528271)
S: C6 OK STATUS completed

C: C7 NOOP
S: C7 OK Nothing done

C: C10 SELECT "Trash"
S: * FLAGS (\Answered \Flagged \Draft \Deleted \Seen)
S: * OK Flags permitted
S: * OK UIDs valid
S: * 1 EXISTS
S: * 0 RECENT
S: * OK Highest
S: * OK Predicted next UID
S: C10 OK SELECT completed

C: C11 FETCH 1:1 (UID)
S: 1 FETCH (UID 24)
S: C11 OK FETCH completed

C: C12 UID FETCH 24 (UID RFC822.SIZE FLAGS BODY.PEEK)
S: * 1 FETCH (UID 24 RFC822.SIZE 79 FLAGS () BODY {70}
S: from: sender@example.com
S: to: receiver@example.com
S: subject: test1
S:
S: )
S: C12 OK UID FETCH completed

C: C13 UID FETCH 24 (UID BODY.PEEK[])
S: * 1 FETCH (UID 24 BODY[] {79}
S: from: sender@example.com
S: to: receiver@example.com
S: subject: test1
S:
S: hello 1
S: )
S: C13 OK UID FETCH completed

C: C14 UID FETCH 24 (UID FLAGS)
S: * 1 FETCH (UID 24 FLAGS ())
S: C14 OK UID FETCH completed

C: C15 UID STORE 24 +FLAGS (\Deleted)
S: * 1 FETCH (UID 24 FLAGS (\Deleted))
S: C15 OK UID STORE completed

C: C16 EXPUNGE
S: * 1 EXISTS
S: * 1 EXPUNGE
S: * 0 EXISTS
S: C16 OK EXPUNGE completed

C: C17 CLOSE
S: C17 OK CLOSE completed

C: C18 LIST "" *               //----- 参数: "邮箱路径名" "邮箱名(可使用通配符)"
S: * LIST (\HasNoChildren) "/" "INBOX"
S: * LIST (\HasNoChildren \Drafts) "/" "Drafts"
S: * LIST (\HasNoChildren \Junk) "/" "Junk"
S: * LIST (\HasNoChildren \Sent) "/" "Sent Mail"
S: * LIST (\HasNoChildren \Trash) "/" "Trash"
S: C18 OK LIST completed

C: C19 LOGOUT
S: * BYE Logout requested
S: C19 OK Piccobello!
S: closed
页: [1]
查看完整版本: wildduck--测试工具