我必须在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的主要问题。看来我会尝试向其中传输错误的数据。