前端临床手札——单元测试

近来博主事情是和另一枚后端协作,然则常常发明他写的接口失足,苦逼连连。觉得不能如许下去就学写一下单元测试,等他更新代码我都跑一遍确认一下,如许事情放心多了。

经由博主一番查找,貌似被引荐比较多的有mochachai,下面纪录简朴运用的笔记,其他不懂的google吧!:)

因为测试的项目是前端项目,测试的体式格局也是翻开页面。下面先申明一下目次构造

test/
    vendor/
        chai-as-promised.js //背面引见是怎样运用
        chai.js
        mocha.css
        mocha.js
    units/
        account.js
        sample.js
        ...
    index.html
    index.js    

测试用的页面

###index.html###

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Testing</title>
    <link rel="stylesheet" href="vendor/mocha.css">
</head>
<body>
    <div id="mocha"></div>
    <div id="messages"></div>
    <div id="fixtures"></div>
    <script src="vendor/mocha.js"></script>
    <script src="../libs/requirejs/require.js"></script>
    <script>
        require(['index']); 
    </script>
</body>
</html>

###index.js###

mocha.setup('tdd'); //设置运用什么形式 tdd / bdd 
require('units/sample')(); //引入对应测试用例
mocha.run(); //运转

详细用例,关于chai的运用请看 chai.assert api

###units/sample.js###

module.exports = function(){
    
    //chai.assert 是典范的断言作风
    var assert = require('../vendor/chai').assert;
        
    //定义一组测试用例。
    suite('Array', function(){
        
        //此要领会在这个suite一切测试用例实行前实行一次,只一次,这是跟setup的区分。
        suiteSetup(function(){
            console.log('suitSetup...');
        });
        
        //此要领会在每一个测试用例实行前都实行一遍。
        setup(function(){
            console.log('setup...');
        });

        suite('indexOf()', function(){
            //详细实行的测试用例完成代码。
            test('should return -1 when not present', function(){
                assert.equal(-1, [1, 2, 3].indexOf(4));
            });
        });

        suite('indexOf2()', function(){
            test('should return not -1 when present', function(){
                assert.equal(0, [1, 2, 3].indexOf(1));
            });
        });

        //此要领会在每一个测试用例实行后都实行一遍,与setup相反。
        teardown(function(){
            console.log('teardown...');
        });

        //此要领会在这个suite一切测试用例实行后实行一次,与suiteSetup相反。
        suiteTeardown(function(){
            console.log('suiteTeardown...'); 
        });
    });

}

断言Promise

###units/account.js###
var chai = require("../vendor/chai"),
    chaiAsPromised = require("../vendor/chai-as-promised");

chai.use(chaiAsPromised);

module.exports = function(){
        
    //这个是项目的model类
    var account = require('models/account.model')
        
    suite('Account', function(){
        //测试登录
        test('signin', function(){
        
            var user = {
                username: "admin@ggg.com",
                password: "654321"
            }

            //当要求登录接口没返回用户id时显现`登录失利`
            return assert.eventually.deepProperty(account.signin(user), 'attrs.id', '登录失利');
        });

        //测试登出
        test('signout', function(){
            //当要求登出接口后返回对象的code属性不等于0时提醒`退出失利`
            return assert.eventually.propertyVal(account.signout(), 'code', 0, '退出失利');
        });

    });

}

现在会在全部项目的根目次下建立test目次举行寄存测试相干的代码,运用也很轻易,翻开test/index.html即可。
《前端临床手札——单元测试》

测试东西 mocha
断言库 chai
测试驱动开辟(TDD)及测试框架Mocha.js入门进修

    原文作者:帕奇式
    原文地址: https://segmentfault.com/a/1190000005116151
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞