У меня есть метод ES6 так:JS модульного тестирования метода цепь в Мокко
/**
* Builds a knex object with offset and limit
* @param {Object} pagination
* @param {number} pagination.count - limit query to
* @param {number} pagination.start - start query at
* @returns {QueryBuilder}
*/
buildPagination (pagination) {
if (_.isEmpty(pagination)) {
return this;
}
let count = pagination.count;
let start = pagination.start;
this.knex = this.knex.offset(start);
if (count !== undefined) {
this.knex = this.knex.limit(count);
}
return this;
}
И мой тест выглядит следующим образом:
describe("#buildPagination",() => {
let knex;
let b;
let pagination;
beforeEach(() => {
knex = sinon.stub();
knex.offset = sinon.stub();
knex.limit = sinon.stub();
b = new QueryBuilder(knex);
pagination = {
start: 3,
count: 25
};
});
it.only("should attach limit and offset to knex object",() => {
let res = b.buildPagination(pagination).knex;
console.log(res);
assert(res.offset.calledOnce);
assert(res.offset.calledWith(3));
assert(res.limit.calledAfter(res.offset))
// assert(res.knex.limit.calledWith(25));
});
});
ошибка Я бег в TypeError: Cannot read property 'limit' of undefined
. Ошибка происходит с этой линии: this.knex = this.knex.limit(count);
что значение здесь? this.knex = this.knex.offset (начало). Невозможно прочитать свойство «limit» неопределенных значений this.knex не определено. – dannypaz
А, ты прав. Не имеет смысла, почему он не может найти свойство knex, потому что если я запустил этот тест, не проверив лимит-вызов, он пройдет – dennismonsewicz