現在、 this.refs [ data ] を含む関数の単体テストを行っています。浅いレンダリングしかできないので、未定義になり続けます。私は次のようにしてシノンを嘲笑しようとしました
var refs = { '001m000000RkzHuAAJ': function () {} };
var refStub = sinon.mock(refs);
しかし、関数が refs ではなく this.refs を実行しているため、機能していないと思います。this.refs をモックする方法について何か考えはありますか?
編集:
const wrapper = shallow (
<CashAllocation receipt={receipt} slds={''} clients={clients} billingStatements={billingStatementswithAllocation} userTitle={'Premium Accounting User'} userPermission={2} />
);
wrapper.instance().autoApply();
wrapper.update();
console.log(wrapper.state('billingStatements'));
それが呼んでいるもの:
autoApply() {
const clientsSortedbyLargestOutstanding = this.props.clients.slice().sort(function(a,b) {
if (a.outstandingBalance < b.outstandingBalance) {
return 1;
} else if (a.outstandingBalance == b.outstandingBalance) {
return 0;
} else {
return -1;
}
});
var amountToApply = this.state.receipt.Amount_Remaining__c;
clientsSortedbyLargestOutstanding.forEach(function(client) {
var amountApplied = 0;
if (this.state.receipt.Amount_Remaining__c == 0) {
amountToApply = 0;
} else {
if (client.outstandingBalance < (amountToApply + client.currentAllocation)) {
amountApplied = client.currentAllocation + (client.outstandingBalance - client.currentAllocation);
amountToApply = amountToApply - (client.outstandingBalance - client.currentAllocation);
} else {
amountApplied = client.currentAllocation + amountToApply;
amountToApply = 0;
}
}
this.refs[ client.Id ].autoApply(amountApplied);
}, this);
}
次のエラーが表示されます。スタック トレースを掘り下げると、その this.refs が原因です。
TypeError: Cannot read property 'autoApply' of undefined