Установщик получения класса Javascript показывает Uncovered Line в модульном тесте - PullRequest
0 голосов
/ 21 февраля 2019

У меня следующий класс javascript и модульный тест написания с использованием мокко и синона.Когда я запускаю тестовый пример, я вижу непокрытые строки для 'return this._agentId;'и 'this._agentId = value;'. Я не уверен, как покрыть эти тестируемые линии. Я использую инструмент покрытия покрытия Istanbul, чтобы увидеть покрытие.

// Agentmessage.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;

// Agentmessage.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');
        });

    });

1 Ответ

0 голосов
/ 24 февраля 2019

Я не вижу той же проблемы, что и вы.Я получаю 100% покрытие.

Вы говорите, Стамбул, но на самом деле вы правильно используете пакет nyc ?Я думаю, вы обнаружите, что проект instanbul предлагает вам использовать nyc runner, если вы этого еще не сделали.

Рассмотрите возможность обновления вашей среды, если вы можете.

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

Если это не проясняет ситуацию, подумайте об удалении вещей, по крайней мере временно, которые вы не используете в этих конкретных тестах.например, синон и чай как обещано.Изолировать код.Посмотрите, есть ли там конфликты.

Попробуйте этот похожий код.Я получаю полное покрытие.

./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');
  });
});

Если после всего этого, если это все еще проблема, если вы используете более продвинутыйКонфигурация nyc / istanbul , начните удаление этой конфигурации и используйте свойства по умолчанию.Посмотрите, найдете ли вы сладкую / беспокойную часть.

...