1

現在、 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
4

0 に答える 0