Мне нужно протестировать функцию в моем компоненте vue - в зависимости от того, кто щелкнет по строке в таблице, строка должна быть перекрашена в другие цвета с помощью классов начальной загрузки vue.
setTransactionsSigns() {
if (this.user.payload.isAdmin) {
_.each(this.transactions, (transaction) => {
transaction.signers = transaction.signers || [];
let countSigners = transaction.signers.filter(s =>
s.signed).length;
let countAdmins = transaction.signers.length;
if (countAdmins >= 1 && countAdmins === countSigners) {
transaction._rowVariant = 'success';
} else if (countAdmins >= 1 && countSigners >= 1 &&
countAdmins > countSigners) {
transaction._rowVariant = 'warning';
} else if (countSigners >= 1 && countAdmins < countSigners) {
transaction._rowVariant = 'info';
} else {
transaction.canEdit = true;
}
transaction.canEdit = countSigners <= 0;
});
}
}
Я написал свой первый тест с каркасным тестом:
import Vue from 'vue';
import Transactions from '@/components/Transactions';
describe('Transactions.vue', () => {
it('should get { countSigners: 2, countAdmins: 2 } and set color to
green', () => {
const Constructor = Vue.extend(Transactions);
const vm = new Constructor().$mount();
const currentTransactionsSigns = { countSigners: 2, countAdmins: 2
};
const setTransactionsSignsStub =
sinon.stub(currentTransactionsSigns.vm,
'setTransactionsSigns').returns('currentTransactionsSigns');
const result = setTransactionsSignsStub;
expect((result).to.be.true);
expect(vm.$el.querySelector('.table-wrap').to.have.class('.table-
success'));
});
});
Кажется, он работает неправильно.
Transactions.vue
✗ should get { countSigners: 2, countAdmins: 2 } and set color to green
Trying to stub property 'setTransactionsSigns' of undefined
throwOnFalsyObject@/opt/CopyDocuments/fork-fin/admin/node_modules/sinon/pkg/sinon.js:3017:96
stub@/opt/CopyDocuments/fork-fin/admin/node_modules/sinon/pkg/sinon.js:2849:29
webpack:///test/unit/specs/Transactions.spec.js:9:48 <- index.js:114772:46
Полагаю, главная проблема с sinon.stub. Кажется, я попытаюсь передать в него неправильные данные.