Javascript类getter setter在单元测试下显示Uncovered Line

问题描述 投票:1回答:1

我有跟随javascript类和使用mocha和sinon编写单元测试。当我运行测试用例时,我看到了'return this._agentId;'的未覆盖行。和'this._agentId = value;'。我不知道如何覆盖这些测试线。我正在使用伊斯坦布尔测试覆盖工具来查看覆盖范围。

//代理messaging.js

    class AgentMessage {
        constructor(agentId, message) {
            this._agentId = agentId;
            this._message = message;
        }

        get agentId() {
            return this._agentId;
        }

        set agentId(value) {
            this._agentId = value;
        }

    }

    module.exports = AgentMessage;

//代理messaging.test.js

    'use strict';

    const chai=require('chai');
    const sinon=require('sinon');
    var chaiAsPromised=require('chai-as-promised');
    chai.use(chaiAsPromised).should();
    const expect = chai.expect;
    const agentMessage = require('../src/model/agentMessage');

    describe('agentMessage test',function() {
        let sandbox;
        let agentMessageObj;
        beforeEach(() => {
            agentMessageObj = new agentMessage('agentId', 'message');
            sandbox=sinon.sandbox.create();
        });

        afterEach(() => {
            sandbox.restore();
        });
        it('agentMessage set agentId Test',() => {
            agentMessageObj.agentId = 'agentId';
            expect(agentMessageObj.agentId).to.deep.equal('agentId');
        });
        it('agentMessage get agentId Test',() => {
            expect(agentMessageObj.agentId).to.equal('agentId');
        });

    });
javascript node.js mocha es6-class sinon-chai
1个回答
1
投票

我没有看到同样的问题。我得到100%的报道。

你说伊斯坦布尔,但你实际上使用nyc包正确吗?我想你会发现instanbul project建议你使用nyc跑步者,如果你还没有。

如果可以,请考虑刷新您的环境。

rm -rf .nyc_output && rm -rf coverage && rm -rf node_modules
npm i --save-dev nyc mocha chai

如果这不能解决问题,请考虑至少暂时删除您在这些特定测试中未使用的内容。例如,sinon和chai-promise。隔离代码。看看那里是否存在一些冲突。

试试这个类似的代码。我得到全面报道。

./node_modules/.bin/nyc --reporter html ./node_modules/.bin/mocha test.js

test.js

const { expect } = require('chai')
const AgentMessage = require('./index');

describe('agentMessage test', function () {
  let agentMessage;

  beforeEach(function () {
    agentMessage = new AgentMessage('agentId01', 'message02');
  });

  it('agentMessage set agentId Test', async function () {
    agentMessage.agentId = 'agentId02';
    expect(agentMessage.agentId).to.deep.equal('agentId02');
  });
});

如果在所有这些之后,如果它仍然是一个问题,如果你正在使用more advanced configuration of nyc/istanbul,开始剥离该配置并使用默认属性。看看你是否找到了甜蜜/困扰的部分。

© www.soinside.com 2019 - 2024. All rights reserved.