摩卡测试在自耕农余烬发生器中不起作用

时间:2013-04-18 03:25:03

标签: ember.js mocha yeoman

我几乎没有修改ember生成器生成的代码

yo ember

并稍微更改test / spec / test.js

'use strict';
(function () {
    describe('Give it some context', function () {
        describe('maybe a bit more context here', function () {
            it('should equal to the title', function () {
                var title = document.title;
                title.should.equal('Ember Starter Kit');
                            console.log(title) //doesn't output anything in the terminal
            });
            it('should equal to a number', function () {
                1.should.equal(1);
            });
        });
    });
})();

有两个奇怪的事情:

  1. console.log不会在终端中输出任何内容
  2. 显示0测试:

    运行“mocha:all”(mocha)任务 测试:http:// 。*。* / index.html

    0测试完成(1毫秒)

    完成,没有错误。

1 个答案:

答案 0 :(得分:2)

我注意到当你得到“0测试完成”时,测试文件中就会出错。

您的测试有两个问题:

  1. 在console.log(标题)之后缺少分号
  2. 对Integer执行方法是语法错误。请尝试以下方法:
  3. expect(1).to.equal(1);

    另外,请确保在Chai包含后index.html中包含以下几行(以便should有效):

    ...
    <!-- assertion framework -->
    <script src="lib/chai.js"></script>
    <script>var expect = chai.expect</script>
    <script>var should = chai.should()</script>
    ...
    

    这会导致您的测试运行。但是,我没有控制台日志记录问题的答案。我自己在寻找答案。似乎是grunt-mocha和PhantomJS的东西。

    编辑:结果显示,禁用了登录grunt-mocha的控制台:grunt-mocha source

    如果您进入项目目录中的node_modules/grunt-mocha/tasks/mocha.js,则可以取消注释第101行,并且日志记录将适用于您的项目。

    完整更新的测试文件:

    /*global describe, it, document, expect */
    'use strict';
    (function () {
        describe('Give it some context', function () {
            describe('maybe a bit more context here', function () {
                it('should equal to the title', function () {
                    var title = document.title;
                    title.should.equal('Ember Starter Kit');
                                console.log(title); //doesn't output anything in the terminal
                });
                it('should equal to a number', function () {
                    expect(1).to.equal(1);
                });
            });
        });
    })();
    

    编辑:来自grunt-mocha的开发者:

    是的,取消注释该行以在命令行中获取控制台输出...虽然通常您不希望在运行自动化测试时这样做,因此默认情况下禁用它。如果你想真正调试,我建议在浏览器中打开规范并使用浏览器控制台/调试器。奖励是您可以单击套件/测试,以便它只运行您感兴趣的测试。