美文网首页
用Jasmine测试callback

用Jasmine测试callback

作者: hzmangel | 来源:发表于2016-11-22 00:09 被阅读49次

    最近写点js代码,试着用了下jasmine。自己写的一个函数用callback来传数据,最后需要合并到async的调用链中去,但是在写测试的时候没找到怎么写的(最后发现是思维定式了,看到解决方案就会知道了),也不知道是自己没找对关键字还是咋地,反正就是没找到相关的代码。不过最后在洗了个澡后试出来了东西,记在这吧~


    先是源代码,简化一个版本了:

    function foobar(content, callback) {
        if (!content.includes('foobar')) {
            callback("Content doesn't contain needed word!");
        } else {
            callback(null, content.replace('foobar', 'aloha'));
        }
    }
    
    module.exports = {
        extractGpsData: extractGpsData,
        foobar: foobar
    };
    

    下面是测试代码

    'use strict';
    
    describe('Foobar', function() {
    
        var foobarHelper = require('foobar_helper');
    
        describe('foobar', function() {
            it('raises error if no foobar provided.', function(done) {
                foobarHelper.foobar('hello world', function(err, content) {
                    expect(err).not.toEqual(null);
                    expect(content).toEqual(undefined);
                    expect(err).toContain('needed word');
                    done();
                });
            });
    
            it('replaces foobar to aloha if foobar provided.', function(done) {
                foobarHelper.foobar('foobar world', function(err, content) {
                    expect(err).toEqual(null);
                    expect(content).not.toEqual(null);
                    expect(content).toContain('aloha');
                    done();
                });
            });
    
        });
    });
    

    主要是之前的代码都是 expect(func).toBe(XXX) 的形式,所以开始有点懵了。后来想想把callback加进去然后在callback里面测试就ok了。嗯,刚看jasmine不到1小时,就这样先用着吧,嘿嘿。

    相关文章

      网友评论

          本文标题:用Jasmine测试callback

          本文链接:https://www.haomeiwen.com/subject/fphppttx.html