代码之家  ›  专栏  ›  技术社区  ›  thoni56

流星测试的测试结果输出错误:Mocha

  •  3
  • thoni56  · 技术社区  · 6 年前

    Meteor 1.7的推荐测试框架似乎是 Meteortesting:mocha

    使用Meteor 1.7.0.3,我创建了一个默认的应用程序( Meteor Create my app ),它具有以下测试(in test/main.js )。

    import assert from“assert”;
    
    描述(“我的应用程序”,功能()。{
    它(“package.json的名称正确”,异步函数()。{
    const name=等待导入(“../package.json”);
    assert.stricteequal(name,“noteit”);
    (});
    
    如果{
    IT(“客户端不是服务器”,函数()。{
    assert.stricteEqual(meetor.isserver,false);
    (});
    }
    
    如果(Meteor.IsServer){
    IT(“服务器不是客户端”,函数()。{
    assert.stricteEqual(meetor.isclient,false);
    (});
    }
    (});
    < /代码> 
    
    我跑了

    流星添加流星测试:摩卡 < /代码>

    通过metertesting:mocha@2.4.5_6,我在控制台中得到了:

    i20180728-12:06:37.729(2)?----------------------
    I20180728-12:06:37.729(2)?-----正在运行服务器测试-----
    I20180728-12:06:37.729(2)?----------------------
    I20180728-12:06:37.729(2)?
    I20180728-12:06:37.730(2)?
    I20180728-12:06:37.731(2)?
    I20180728-12:06:37.737(2)?服务器
    _“未通过测试。753(2)?
    I20180728-12:06:37.755(2)?
    I20180728-12:06:37.756(2)?
    I20180728-12:06:37.756(2)?1次通过(26ms)
    I20180728-12:06:37.756(2)?
    I20180728-12:06:37.757(2)?在浏览器中加载应用程序以运行客户端测试,或设置test_browser_driver环境变量。请参见https://github.com/metertesting/metermocha/blob/master/readme.md运行应用程序测试
    =>退出,代码:0
    =>您的应用程序崩溃。正在等待文件更改。
    < /代码> 
    
    

    实际上,重复了三次。不漂亮。我也没想到会有一个及格的测试会让我的应用程序崩溃。

    在浏览器里我也看到了这个

    我期待的是更好的输出,如meteor testing guide:

    .,具有以下测试(intest/main.js)

    import assert from "assert";
    
    describe("my-app", function () {
      it("package.json has correct name", async function () {
        const { name } = await import("../package.json");
        assert.strictEqual(name, "noteit");
      });
    
      if (Meteor.isClient) {
        it("client is not server", function () {
          assert.strictEqual(Meteor.isServer, false);
        });
      }
    
      if (Meteor.isServer) {
        it("server is not client", function () {
          assert.strictEqual(Meteor.isClient, false);
        });
      }
    });
    

    我跑

    meteor add meteortesting:mocha
    meteor test --driver-package meteortesting:mocha
    

    流星测试:摩卡@2.4.5_6我在控制台中找到这个:

    I20180728-12:06:37.729(2)? --------------------------------
    I20180728-12:06:37.729(2)? ----- RUNNING SERVER TESTS -----
    I20180728-12:06:37.729(2)? --------------------------------
    I20180728-12:06:37.729(2)? 
    I20180728-12:06:37.730(2)? 
    I20180728-12:06:37.731(2)? 
    I20180728-12:06:37.737(2)?   the server
        ✓ fails a test.753(2)? 
    I20180728-12:06:37.755(2)? 
    I20180728-12:06:37.756(2)? 
    I20180728-12:06:37.756(2)?   1 passing (26ms)
    I20180728-12:06:37.756(2)? 
    I20180728-12:06:37.757(2)? Load the app in a browser to run client tests, or set the TEST_BROWSER_DRIVER environment variable. See https://github.com/meteortesting/meteor-mocha/blob/master/README.md#run-app-tests
    => Exited with code: 0
    => Your application is crashing. Waiting for file change.
    

    实际上,重复了三次。不漂亮。我也没想到会有一个通过测试而导致我的应用程序崩溃。

    在浏览器里我也看到了这个

    enter image description here

    我期待着更像是美好的输出,根据Meteor testing guide:

    2 回复  |  直到 6 年前
        1
  •  2
  •   thoni56    6 年前

    和大多数node.js一样,这里有许多几乎所有东西的分叉。所以也 meteortesting:mocha .

    cultofcoders:mocha 似乎是 a few commits ahead 属于 practicalmeteor:mocha 它曾一度是流星的推荐测试框架。

    如果你跑

    meteor add cultofcoders:mocha
    meteor test --driver-package cultofcoders:mocha
    

    你会得到很好的输出。

    奇怪的是,我发现 文化编码器:摩卡 我得到( meteor list | grep mocha )是2.4.6,Github回购没有的版本…

        2
  •  1
  •   SimonSimCity    6 年前

    您所引用的屏幕截图是使用 practicalmeteor:mocha 但是 meteortesting:mocha 不是(另一个答案声称)它的一个分叉,而是一个单独开发的包,旨在同一个目标,这是在流星运行测试。

    软件包的用法非常不同,而且 实用:摩卡 设置起来可能有点复杂,这个列表只适用于它的版本 1.0.1 以后可能会改变。

    但是我必须承认文档需要更新…无论如何,这里有一些有用的提示,我很快就会把它们包括在文档中。

    如果您只是想开始,请运行以下命令:

    meteor add meteortesting:mocha
    npm i --save-dev puppeteer@^1.5.0
    TEST_BROWSER_DRIVER=puppeteer meteor test --driver-package meteortesting:mocha --raw-logs --once
    

    您想在测试完成后退出,还是在文件更改后重新运行它们?

    通常,Meteor会在应用程序退出(正常退出或崩溃)时重新启动应用程序,其中包括测试运行程序。

    如果您想在某个CI中使用它或只想运行一次测试,请添加 --once 到流星命令,否则设置 TEST_WATCH=1 在运行此脚本之前。如果不设置env变量,并且不定义 ——曾经 ,Meteor将打印这些行,并在完成测试后重新启动测试:

    => Exited with code: 0
    => Your application is crashing. Waiting for file change.
    

    到目前为止,我还没有找到一种方法来检查国旗 ——曾经 设置,这将省略env变量。在CI和连续测试之间进行选择的灵活性非常有用。

    也许您目前正在开发一个特性,并希望在工作时运行测试。如果你已经设置 测试表=1 不使用 ——曾经 ,Meteor将在注册文件更改后重新启动测试。您甚至可以使用 MOCHA_GREP .


    您希望在哪里以及如何查看结果?

    当前必须在命令行上查看所有测试结果或在命令行中显示服务器测试和浏览器中的客户端测试之间进行选择。目前 实用:摩卡 不支持在浏览器中显示服务器和客户端测试的结果,如屏幕截图所示。

    请查看程序包文档以了解更多详细信息:


    你应该禁用流星时间戳使它看起来更好。

    因为每行都添加了时间戳,所以测试看起来很冒险。要避免这种情况,请添加 --raw-logs 听从你的命令。


    我希望这能回答你大部分的问题。我知道文档需要一些改进,如果有人愿意花时间为那些“只想开始”的人把它按更合理的顺序排列,我会很高兴的。