【问题标题】:Functional Site Testing using Mocha and Chai for Nodejs使用 Mocha 和 Chai 进行 Nodejs 的功能站点测试
【发布时间】:2014-09-25 12:30:38
【问题描述】:

我很难理解以下使用 mocha 和 chai 在 nodejs 中进行站点测试的代码:

suite('Global Tests', function(){
        test('page has a valid title', function(){
                assert(document.title && document.title.match(/\S/) &&
                        document.title.toUpperCase() === 'AHC');
        });
});

令人困惑的是这段代码是如何工作的,但似乎没有遵循chai documentation 的断言。其中格式如下:

断言(表达式,消息)

【问题讨论】:

    标签: node.js mocha.js functional-testing chai


    【解决方案1】:

    它只是没有传递第二个参数(消息)。这不是无效的,只是使确定测试失败的原因变得更加困难。如果您想使测试更清晰,您可以将表达式分成三个断言,并传递一条关于断言是否验证的消息。

    suite('Global Tests', function(){
      test('page has a valid title', function(){
        assert(document.title, 'document title is not defined');
        assert(document.title.match(/\S/), 'document title does not have a single character');
        assert(document.title.toUpperCase() === 'AHC', 'Document title does not equal AHC');
        });
    });    
    

    【讨论】:

    • 我添加了 assert('foo' !== 'bar', 'foo is not bar');测试消息是如何工作的。我把它放在上面代码的不同部分,看不到“foo is not bar”的消息。你能用上面的代码提供一个多个断言的例子吗?
    • 用一个例子更新了答案。如果您想查看消息,我建议更改第三个断言中的“AHC”值。请注意,您的断言示例 'foo' !== 'bar' 始终为真,因此断言永远不会发生。
    • 我运行了你的代码,我发现浏览器中显示的消息“页面有一个有效的标题”(检查或 X 取决于它是否通过)而不是相关的消息与断言语句。断言消息是否应该显示在浏览器中?
    • 只有在断言失败时才会显示断言消息。将第三个断言中的 AHC 更改为 FOO。然后你应该看到一个 X 和我相信的断言消息。
    • 您对失败时显示的消息是正确的。但是当两个断言失败时会发生问题。我将 document.title === 'ABC 和花药断言放置到 document.title.toUpperCase() === 'foo'。我发现只有第一个失败的 ABC 断言被显示,而另一个失败的断言没有显示。这部分超出了我的问题范围,但是,多个断言将需要单独的测试函数才能显示在浏览器中。这是我通过测试您的代码发现的。谢谢
    猜你喜欢
    • 2020-08-18
    • 1970-01-01
    • 2017-02-18
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多