草庐IT

javascript - 有没有办法在运行时获取当前的 Mocha 实例和编辑选项?

coder 2024-05-12 原文

假设您有一个简单的 mocha 测试:

describe("Suite", function(){
    it("test",function(doneCallback){
        // here be tests
    });
});

在此测试中,我可以通过在 describe 函数中的任意位置添加 this.timeout(VALUE); 来更改超时。

但是,除了 timeout 值之外,还有很多其他的 Mocha options可以从命令行或位于测试文件夹 (./test/mocha.opts) 中的 mocha.opts 文件专门声明。

我想要的是在运行时更改其中一些选项(例如,reporter),而不是在命令行/mocha.opts 文件中。

根据我对可能性的研究,我发现有 an article explaining how you can use mocha programmatically ,这将允许在运行时更改这些选项,但您需要自己创建 Mocha 实例,而在普通测试中,您无法直接访问 Mocha 实例。

那么,有没有办法从现有测试中获取 Mocha 实例,并在测试期间的运行时更改其中一些选项,如 reporter

我想要一个不需要以任何方式修改 Mocha 源代码的选项(我想我可以篡改 Mocha 实例以实现一种直接在 Mocha 构造函数中获取实例的方法)。

最佳答案

实现该目标的最佳方法是根据您已经引用的 wiki 链接使用 Mocha,即以编程方式使用 Mocha。

因此,对于您关于更改 reporter 参数的询问,这里有一个简短的示例,可以执行您想要的操作,以便针对理论上已经存在的名为 test-file 的文件运行测试-a.js 包含你的测试:

var Mocha = require('mocha'),
    mocha = new Mocha(),
    path = require('path');

mocha.addFile(path.join(__dirname, 'test-file-a.js'));

mocha
    .reporter('list')
    .run();

除此之外,还有许多其他选项可供您使用,还有一些事件监听器,例如 test,您可能希望在测试期间执行某些操作,例如:

mocha
    .reporter('list')
    .ui('tdd')
    .bail()
    .timeout(10000) 
    .run()      
    .on('test', function(test) {
        if (test.title === 'some title that you want here') {
            //do something
        }
    });

请注意,您可以为每个将再次运行测试套件的 Mocha 实例定义选项,但不会在测试套件的运行期间,例如,如果您开始测试 test-file-a.js 带有选项 reporter('list') 如上所述,当测试运行到其他东西时你不能改变它,就像你可能做的那样使用 timeout 选项,您可以在其中执行 this.timeout()

因此,您必须每次都使用不同的选项实例化一个新的 Mocha 实例。

关于javascript - 有没有办法在运行时获取当前的 Mocha 实例和编辑选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47755719/

有关javascript - 有没有办法在运行时获取当前的 Mocha 实例和编辑选项?的更多相关文章

  1. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  2. ruby - 难道Lua没有和Ruby的method_missing相媲美的东西吗? - 2

    我好像记得Lua有类似Ruby的method_missing的东西。还是我记错了? 最佳答案 表的metatable的__index和__newindex可以用于与Ruby的method_missing相同的效果。 关于ruby-难道Lua没有和Ruby的method_missing相媲美的东西吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/7732154/

  3. ruby - 如何每月在 Heroku 运行一次 Scheduler 插件? - 2

    在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/

  4. ruby-on-rails - 如何在 ruby​​ 中使用两个参数异步运行 exe? - 2

    exe应该在我打开页面时运行。异步进程需要运行。有什么方法可以在ruby​​中使用两个参数异步运行exe吗?我已经尝试过ruby​​命令-system()、exec()但它正在等待过程完成。我需要用参数启动exe,无需等待进程完成是否有任何ruby​​gems会支持我的问题? 最佳答案 您可以使用Process.spawn和Process.wait2:pid=Process.spawn'your.exe','--option'#Later...pid,status=Process.wait2pid您的程序将作为解释器的子进程执行。除

  5. ruby - 无法运行 Rails 2.x 应用程序 - 2

    我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby​​:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r

  6. ruby-on-rails - rails 目前在重启后没有安装 - 2

    我有一个奇怪的问题:我在rvm上安装了ruby​​onrails。一切正常,我可以创建项目。但是在我输入“railsnew”时重新启动后,我有“程序'rails'当前未安装。”。SystemUbuntu12.04ruby-v"1.9.3p194"gemlistactionmailer(3.2.5)actionpack(3.2.5)activemodel(3.2.5)activerecord(3.2.5)activeresource(3.2.5)activesupport(3.2.5)arel(3.0.2)builder(3.0.0)bundler(1.1.4)coffee-rails(

  7. ruby-on-rails - 如何使用 instance_variable_set 正确设置实例变量? - 2

    我正在查看instance_variable_set的文档并看到给出的示例代码是这样做的:obj.instance_variable_set(:@instnc_var,"valuefortheinstancevariable")然后允许您在类的任何实例方法中以@instnc_var的形式访问该变量。我想知道为什么在@instnc_var之前需要一个冒号:。冒号有什么作用? 最佳答案 我的第一直觉是告诉你不要使用instance_variable_set除非你真的知道你用它做什么。它本质上是一种元编程工具或绕过实例变量可见性的黑客攻击

  8. ruby 正则表达式 - 如何替换字符串中匹配项的第 n 个实例 - 2

    在我的应用程序中,我需要能够找到所有数字子字符串,然后扫描每个子字符串,找到第一个匹配范围(例如5到15之间)的子字符串,并将该实例替换为另一个字符串“X”。我的测试字符串s="1foo100bar10gee1"我的初始模式是1个或多个数字的任何字符串,例如,re=Regexp.new(/\d+/)matches=s.scan(re)给出["1","100","10","1"]如果我想用“X”替换第N个匹配项,并且只替换第N个匹配项,我该怎么做?例如,如果我想替换第三个匹配项“10”(匹配项[2]),我不能只说s[matches[2]]="X"因为它做了两次替换“1fooX0barXg

  9. ruby - 在没有 sass 引擎的情况下使用 sass 颜色函数 - 2

    我想在一个没有Sass引擎的类中使用Sass颜色函数。我已经在项目中使用了sassgem,所以我认为搭载会像以下一样简单:classRectangleincludeSass::Script::FunctionsdefcolorSass::Script::Color.new([0x82,0x39,0x06])enddefrender#hamlengineexecutedwithcontextofself#sothatwithintemlateicouldcall#%stop{offset:'0%',stop:{color:lighten(color)}}endend更新:参见上面的#re

  10. ruby - Sinatra:运行 rspec 测试时记录噪音 - 2

    Sinatra新手;我正在运行一些rspec测试,但在日志中收到了一堆不需要的噪音。如何消除日志中过多的噪音?我仔细检查了环境是否设置为:test,这意味着记录器级别应设置为WARN而不是DEBUG。spec_helper:require"./app"require"sinatra"require"rspec"require"rack/test"require"database_cleaner"require"factory_girl"set:environment,:testFactoryGirl.definition_file_paths=%w{./factories./test/

随机推荐