2015-06-27 11 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);