Meteor mocha watch模式显示代码行而不是断言消息

时间:2017-10-17 08:32:33

标签: unit-testing meteor mocha

我在监视模式下使用practicalmeteor:mocha并编写了一些UI测试(单元测试模板组件)。

我有一个奇怪的问题,我的失败测试不会显示断言消息,而是显示代码片段。

我附上了一个带有示例输出的图像:

enter image description here

不幸的是,我没有在软件包或mocha本身的文档中找到任何与此相关的配置信息。

我的测试命令如下:

meteor test --driver-package practical meteor:mocha

测试代码如下:

// PACKAGES
import {Meteor} from 'meteor/meteor';
import {Template} from 'meteor/templating';
import {$} from 'meteor/jquery';
import {Random} from 'meteor/random';
import {chai, assert} from 'meteor/practicalmeteor:chai';
import StubCollections from 'meteor/hwillson:stub-collections';
import {sinon} from 'meteor/practicalmeteor:sinon';

// HELPERS
import {withRenderedTemplate, renderTemplate, withDiv} from '../../test-helpers.js';

// COMPONENTS
import '../../../startup/both/schemaDefaults';
import {loadingClassName} from '../../components/loading/loading';
import {Comments} from '../../../api/comments/Comments';
import '../comments.js';


describe("UI/Comments", function () {

    beforeEach(function () {
        StubCollections.stub(Comments);
        Template.registerHelper('_', key => key);
    });

    afterEach(function () {
        Template.deregisterHelper('_');
        StubCollections.restore();
        Meteor.subscribe.restore();
    });

    ////////////////////////////////////////////////////////    

    it("renders a loading symbol on load", function (done) {

        sinon.stub(Meteor, 'subscribe', () => ({
            subscriptionId: Random.id(),
            ready: () => false,
        }));

        withRenderedTemplate(Template.comments, {}, el => {
            const target = $(el);
            chai.assert.equal(target.find('.' + loadingClassName).length, 1);
            done();
        });

    });

    ////////////////////////////////////////////////////////

    it("displays a message if no comments exist for the given document", function (done) {

        sinon.stub(Meteor, 'subscribe', () => ({
            subscriptionId: Random.id(),
            ready: () => true,
        }));

        withRenderedTemplate(Template.comments, {docId: Random.id()}, el => {
            const target = $(el);
            chai.assert.equal(target.find('.' + loadingClassName).length, 0);
            chai.assert.equal(target.find('.no-comments').length, 1);
            done();
        });

    });

    ////////////////////////////////////////////////////////

    it("displays comments, if comments are found", function (done) {

        sinon.stub(Meteor, 'subscribe', () => ({
            subscriptionId: Random.id(),
            ready: () => true,
        }));

        const userId = Random.id();
        const commentDoc = {
            title: Meteor.user().username,
            status: 0,
            docId: Random.id(),
            description: "this is a comment",
            createdAt: new Date().getTime(),
            updatedAt: new Date().getTime(),
            createdBy: userId,
            updatedBy: userId,
        };

        Comments.insert(commentDoc);

        withRenderedTemplate(Template.comments, {docId: Random.id()}, el => {
            const target = $(el);
            assert.equal(target.find('.' + loadingClassName).length, 0);
            assert.equal(target.find('.no-comments').length, 0);
            assert.isAbove(target.find('.comment-entry').length, 0);
            done();
        });
    });

    ////////////////////////////////////////////////////////

    it("displays a comment of self different than comments of others", function (done) {
        assert.fail("not yet implemented");
    })
});

1 个答案:

答案 0 :(得分:0)

好的,我在挖掘DOM之后找到了答案。

这对非Meteor用户来说也很有趣:

mocha web报告器使用错误输出一个名为val intent = Intent(this@HomeActivity,ProfileActivity::class.java); intent.putExtra("profileName", "John Doe") var b = Bundle() b.putBoolean("isActive", true) intent.putExtras(b) startActivity(intent); 的css类名,这当然非常容易受到css覆盖的影响。

我首先想到,这可能不是问题,因为我通常使用带前缀的类名来避免此类冲突。

但是我安装了一个带编辑器的软件包,它还带有一个默认的css,它也有一个条目,名为:

.error

Meteor app巧妙地捆绑了所有这些,在运行我的Mocha测试时,错误字段隐藏在网络记者中。

我删除了编辑器包,我的问题得到了解决。

我从中学到了什么:不要在包中使用css类的通用名称。