JavaScript RegEx获取测试规范
JavaScript RegEx to get test spec
使用Jasmine时,我需要获取插入符号所在的当前测试规范。所以,如果我有一个规范,比如:
it("should do something", function() {
var foo = 'bar';
expect(foo).toEqual('bar');
});
我在空行中有插入符号,我单击UI中的某个按钮,它应该从插入符号返回以找到规范。所以它转到var foo = 'bar';
行,检测到它不匹配,所以转到具有it()
的下一行,因此发现该行是规范。所以我可以逐行返回,但检测它是否是包含it()
的行是我需要帮助的。
我的最终情况是检测作为第二个参数传递的function()
中是否有参数。如果没有,我需要在里面加一个。因此,由于上面的代码段在function()
中没有参数,所以我需要添加一个,使其看起来像:
it("should do something", function(done) {
var foo = 'bar';
expect(foo).toEqual('bar');
});
请注意现在function()
中的done
。此外,"should do something"
可以是双引号或单引号,并且可以包含任何合法的JavaScript字符
作为测试,我使用了RegEx:
/^'s*it'((?:"|')['w's]+(?:"|'), function'((?:'w+)?') {/
它适用于我的简单测试,但感觉不完整,尤其是在"should do something"
检测部分。
我认为您可以安全地使用基于展开循环方法的正则表达式:
^'s*it'([^,]*(?:,(?!'s*function'()[^,]*)*,'s*function'('w*')'s*{
它在一个字符串的开头匹配it(
,后面是任何不是, function(
的内容,然后是, function(...) {
。^'s*it'(['s'S]*?,'s*function'('w*')'s*{
的同义词,但表达效率高得多。
查看regex演示
现在,如果您需要在function()
中不包含任何文本的情况下匹配这样的签名,您可以使用要保留的子模式周围的捕获组,稍后可以将其引用为$1
和$2
:
var re = /^('s*it'([^,]*(?:,(?!'s*function'()[^,]*)*,'s*function'()(')'s*{)/;
var str = 'it("should do something", function() {'n var foo = ''bar'';'n'n expect(foo).toEqual(''bar'');'n});';
var subst = '$1done$2';
var result = str.replace(re, subst);
document.write(result);
如果你真的可以像Oriol建议的那样使用wierd字符串,请使用
^'s*it'((?:"[^"'']*(?:''.[^"'']*)*"|'[^''']*(?:''.[^''']*)*'),'s*function'('w*')'s*{
查看另一个regex演示
它将匹配
it(",function(){", function() {
it(',function(){', function() {
- 正在量角器测试用例中从电子邮件中获取值
- Jasmine测试工厂函数调用本地函数和另一个函数-获取错误:应该是间谍,但得到了function
- 如何测试从promise对象获取数据的控制器
- React路由器<link>如何在Jest测试中获取href的值
- 如何获取Mocha#<测试>type对象
- 测试ReactJs中使用的同构获取
- 无法获取未定义或空引用的属性“测试”
- 角度测试:量角器无法获取输入值
- Node.js selenium webdriver - 在测试中获取浏览器功能
- 与测试用户角色关联的 Facebook 无法获取user_likes
- 在单元测试中获取数据时主干中的争用条件
- 未能在Jasmine测试中获取scrollTop值
- 从jasmine测试中获取JSON数据/报告
- 为什么在ember中添加didInsertElement以获取json后,我的测试失败了
- 从webdriver.io获取数据后动态构建Mocha测试
- 使用JavaScript获取JSON响应并在网页上显示,测试JavaScript
- JavaScript RegEx获取测试规范
- Mocha API测试:获取'类型错误:app.address不是函数'
- 获取访问者's优化A/B测试和变化
- Angular SVG单元测试如何获取SVGLengthList