亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

使用 Node.js 做 Function Test實現方法

2019-11-20 21:50:37
字體:
來源:轉載
供稿:網友

Info
上周 meeting 上同事說他們現在在用 java 寫 function test,產生了很多冗余的代碼,整個項目也變得比較臃腫?,F在迫切需要個簡單的模板項目能快速搭建function test。

后來我回去想了想,為什么我們非得用 java 來做 function test 呢?

Node.js 應該是個不錯的選擇,并且對 json 有著天然的支持,于是回去在 github 上隨手一搜,還果真有相關的項目:testosterone,于是便有了這篇blog.

Server
要做demo,自然要有相應的server來支撐。

在這里我們選用Express作為server。

首先我們建立一個server的文件夾,新建package.json。

復制代碼 代碼如下:

{
    "name": "wine-cellar",
    "description": "Wine Cellar Application",
    "version": "0.0.1",
    "private": true,
    "dependencies": {
        "express": "3.x"
    }
}
 

接下來run command

復制代碼 代碼如下:

npm install

這樣express就裝上了。

我們實現幾個簡單的 get post 方法來做實驗

復制代碼 代碼如下:

var express = require('express')
  , app = express();

app.use(express.bodyParser());

app.get('/hello', function(req, res) {
    res.send("hello world");
});

app.get('/', function (req, res) {
  setTimeout(function () {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end();
  }, 200);
});

app.get('/hi', function (req, res) {
  if (req.param('hello') !== undefined) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello!');
  } else {
    res.writeHead(500, {'Content-Type': 'text/plain'});
    res.end('use post instead');
  }
});

app.post('/hi', function (req, res) {
  setTimeout(function () {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end(req.param('message') || 'message');
  }, 100);
});


app.get('/user', function(req, res) {
    res.send(
      [
        {name:'jack'},
        {name:'tom'}
      ]
    );
});

app.get('/user/:id', function(req, res) {
    res.send({
        id: 1,
        name: "node js",
        description: "I am node js"
    });
});

app.post('/user/edit', function (req, res) {
  setTimeout(function () {
    res.send({
      id:req.param('id'),
      status:1
    });
  }, 100);
}); 
app.listen(3000);
console.log('Listening on port 3000...');

testosterone
server 架設完畢,自然要開始做測試了。

這個 project 的接口的命名都挺優雅,直接上代碼。

首先是測試基本的功能

復制代碼 代碼如下:

var testosterone = require('testosterone')({port: 3000})
  , assert = testosterone.assert;

testosterone
  .get('/hello',function(res){
    assert.equal(res.statusCode, 200);
  })

  .get('/hi',function(res){
    assert.equal(res.statusCode, 500);
  })

  .post('/hi', {data: {message: 'hola'}}, {
    status: 200
    ,body: 'hola'
  });
 

然后針對上面模擬的user的get post 做簡單的測試。

復制代碼 代碼如下:

var testosterone = require('testosterone')({port: 3000})
  , assert = testosterone.assert;

testosterone 
  .get('/user', function (res) {
    var expectRes = [
        {name:'jack'},
        {name:'tom'}
    ];

    assert.equal(res.statusCode, 200);
    assert.equal(JSON.stringify(JSON.parse(res.body)),JSON.stringify(expectRes));
  })

  .get('/user/1', function (res) {

    var user = JSON.parse(res.body);

    assert.equal(res.statusCode, 200);
    assert.equal(user.name, "node js");
    assert.equal(user.description,"I am node js");
  })

接下來,如果你想要針對每個test case 用 give when then 來描述的話,可以這樣:

復制代碼 代碼如下:

var testosterone = require('testosterone')({port: 3000, title: 'test user api'})
  , add = testosterone.add
  , assert = testosterone.assert;

testosterone
  .add(
    'GIVEN a user id  to /user/{id}  /n' +
    'WHEN it have response user /n' +
    'THEN it should return user json',

    function (cb) {
      testosterone.get('/user/1', cb(function (res) {
        var expectRes = {
            id: 1,
            name: "node js",
            description: "I am node js"
        };

        assert.equal(res.statusCode, 200);
        assert.equal(JSON.stringify(JSON.parse(res.body)), JSON.stringify(expectRes));
      }));
  })


  .add(
    'GIVEN a POST  a user info to /user/edit /n' +
    'WHEN find modify success /n' +
    'THEN it should resturn status 1',

    function (cb) {
      testosterone.post('/user/edit', {data: {id: 1, name: "change name"}}, cb(function (res) {
        var res = JSON.parse(res.body);
        assert.equal(res.status, 1);
      }));
    }
  )

  .run(function () {
    require('sys').print('done!');
  });

Conclusion
通過以上的代碼,可以看出,同java 冗長的 http 頭設置等,testosterone確實簡單和優雅了不少。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97国产精品人人爽人人做| 97久久精品国产| 91豆花精品一区| 成人精品网站在线观看| 欧美另类69精品久久久久9999| 欧美激情在线观看视频| 91tv亚洲精品香蕉国产一区7ujn| 国产成人激情小视频| 亚洲黄页网在线观看| 中文字幕精品影院| 97成人超碰免| 岛国av一区二区在线在线观看| 日韩免费av片在线观看| 欧洲亚洲女同hd| 久久资源免费视频| 亚洲精品视频在线观看视频| 国产精品久久久久福利| 久久久国产精品视频| 一本一本久久a久久精品牛牛影视| 68精品久久久久久欧美| 欧美性生交xxxxx久久久| 国产精品永久在线| 欧美精品第一页在线播放| 欧美国产日韩一区二区三区| 中文字幕日韩av| 久久久中精品2020中文| 亚洲第一二三四五区| 国产精品亚洲第一区| 亚洲天堂一区二区三区| 亚洲一区二区久久久久久久| 久久综合国产精品台湾中文娱乐网| 亚洲精品色婷婷福利天堂| 国产精品青草久久久久福利99| 欧美激情国产精品| 欧美一级淫片aaaaaaa视频| 日韩欧美精品免费在线| 国产色综合天天综合网| 午夜美女久久久久爽久久| 欧美激情国内偷拍| 国产亚洲精品成人av久久ww| 国产+成+人+亚洲欧洲| 亚洲一区二区在线播放| 成人中文字幕+乱码+中文字幕| 久久久人成影片一区二区三区| 欧美一级淫片丝袜脚交| 久久福利视频导航| 欧美国产极速在线| 激情成人在线视频| 亚洲国产成人精品电影| 亚洲大尺度美女在线| 日韩免费在线观看视频| 国产精品偷伦免费视频观看的| 国产精品美女午夜av| 国产亚洲激情在线| 亚洲系列中文字幕| 精品视频在线导航| 亚洲第一页在线| 国产精品一区二区三区成人| 成人亚洲欧美一区二区三区| 国产精品99免视看9| 国产精品一区二区久久国产| 久久久国产精品一区| 91色精品视频在线| www国产精品com| 欧美激情欧美激情在线五月| 国产一区二区三区在线播放免费观看| 少妇精69xxtheporn| yellow中文字幕久久| 亚洲已满18点击进入在线看片| 国产综合香蕉五月婷在线| 97视频在线观看免费高清完整版在线观看| 亚洲精品久久久久久下一站| 国产精品中文字幕在线观看| 亚洲女性裸体视频| 久久亚洲私人国产精品va| 91亚洲国产精品| 1769国内精品视频在线播放| 97香蕉久久超级碰碰高清版| 欧美xxxx18性欧美| 欧美三级免费观看| 亚洲激情视频在线播放| 精品国产91久久久久久| 96sao精品视频在线观看| 精品国产91乱高清在线观看| 色综合久久久久久中文网| 社区色欧美激情 | 日韩精品在线视频观看| 久久国产精品久久久久| 亚洲国产天堂久久综合| 色综合伊人色综合网| 亚洲天堂视频在线观看| 久久这里只有精品99| 亚洲成人黄色在线| 亚洲日本中文字幕免费在线不卡| 中文字幕亚洲一区| 日本久久精品视频| 日韩精品有码在线观看| 国产亚洲精品综合一区91| 中日韩美女免费视频网址在线观看| 社区色欧美激情 | 国产做受69高潮| 国产在线98福利播放视频| 亚洲精品国产品国语在线| 日韩免费观看视频| 欧美日韩一区二区在线| 日本免费一区二区三区视频观看| 国产精品久久久亚洲| 亚洲在线第一页| 国产精品私拍pans大尺度在线| 成人黄色av免费在线观看| 亚洲欧美国产va在线影院| 最好看的2019年中文视频| 国产成人精品在线| 国产精品视频一区二区高潮| 欧美极品美女电影一区| 国语自产精品视频在线看一大j8| 欧美性猛交xxxx久久久| 欧美一级黑人aaaaaaa做受| 欧美日韩999| 欧美片一区二区三区| 国产有码在线一区二区视频| 亚洲va久久久噜噜噜久久天堂| 日韩成人在线视频观看| 亚洲精品美女在线观看播放| 国产精品免费视频久久久| 国产97在线播放| 欧美一区二区色| 国产精品视频公开费视频| 欧美精品久久久久久久| 日韩av网站大全| 国产专区欧美专区| 欧美国产日产韩国视频| 国产精品成久久久久三级| 日韩美女免费视频| 欧洲s码亚洲m码精品一区| 亚州欧美日韩中文视频| 久久中文字幕国产| 国产精品国产自产拍高清av水多| 91精品国产91久久久久福利| 亚洲成色777777女色窝| 亚洲成人网在线观看| 久久免费视频网| 91亚洲精品久久久久久久久久久久| 理论片在线不卡免费观看| 亚洲免费精彩视频| 欧美理论电影在线观看| 91国产精品电影| 久久久久久久av| 久久在线精品视频| 久久久亚洲精品视频| 亚洲欧美中文另类| 亚洲综合中文字幕在线观看| 91成人福利在线| 在线播放亚洲激情| 国产精品久久一区主播| 中文字幕在线日韩| 中文字幕成人在线| 成人深夜直播免费观看| 日本韩国欧美精品大片卡二| 97国产成人精品视频| 欧美巨大黑人极品精男| 亚洲一区二区三区乱码aⅴ蜜桃女| 性欧美xxxx视频在线观看| 日韩电影中文字幕|