2015-06-27 58 views
0

我想测试产生正则表达式的方法的行为。摩卡柴正则表达式是等于

采用摩卡/柴测试套件,我有以下代码:

describe('regexTest',function() { 
    it('should return a regexp', function() { 
    var regex = regexTest(); 
    assert.equal(regex, /someregex/); 
    }); 
}); 

但似乎上面的代码不起作用。我试图在铬控制台:

/a/ == /a/ 
> false 

目前我发现的唯一办法就是比较两个正则表达式的toString(应该是平等的,我可以比较):

describe('regexTest',function() { 
    it('should return a regexp', function() { 
    var regex = regexTest(); 
    assert.equal(regex.toString(), '/someregex/'); 
    }); 
}); 

你知道更好这样做吗?因为我觉得这不是真的干净。

回答

1

这是我如何测试一个字面正则表达式是有效的:

var assert = require('assert'); 

describe('RegExp Test', function() { 
    it('should return a valid RegExp', function() { 
    var getSomeRegex = function() { 
     return /someregex/; 
    }; 

    var aRegex = getSomeRegex(); 
    assert.equal(aRegex instanceof RegExp, true); 
    }); 

    it('should return a invalid Regexp', function() { 
    var getInvalidRegex = function() { 
     return '/something'; 
    }; 

    var aInvalidRegex = getInvalidRegex(); 
    assert.equal(aInvalidRegex instanceof RegExp, false); 
    }); 
}); 
+0

有趣的是,我会添加这样的验证。但这篇文章的最初目的是检查两个正则表达式是否等于... – nobe4

0

这是一个有点晚了,但对于其他人谁碰到这个蹒跚而谷歌的方式我做,柴的正常比较功能也正常使用正则表达式对象...

const re = new RegExp('^foo.*bar$', 'i'); 
re.should.eql(/^foo.*bar$/i);