gpt4 book ai didi

unit-testing - 使用Sinon、Mocha、Enzyme 和 React 模拟窗口

转载 作者:行者123 更新时间:2023-12-03 13:14:17 27 4
gpt4 key购买 nike

我正在尝试仅使用上面列出的四个库来模拟我正在使用的组件的窗口对象。

我知道可以使用 JSDom 来完成,但客户端反对使用它。根据我的研究,简单地执行 sinon.stub(window,'location') 应该可以工作,但是当我运行测试时,我的组件中仍然出现 Window undefined 。

当前该组件在渲染返回 {window.location.host} 中调用

有没有想过我做错了什么,让西农把那一篇文章删掉。一旦我删除了该部分,我就可以专注于测试该组件与窗口无关的其他部分。

我的测试方法:

import React from 'react';

import { shallow } from 'enzyme';
import chai from 'chai';
chai.should();
import sinon from 'sinon';

import BillingStatementRow from '../BillingStatementRow';

describe('Test <BillingStatementRow /> Component', function() {

context('Function Testing', function() {

it('Test - onFieldChange - Make sure it handles NaN', function() {

var e = {target: {value: NaN}};

var window = { location : { host : "..." } };

var mockedOnChange = sinon.spy();

const wrapper = shallow (
<BillingStatementRow slds={''} key={'1'}
Id={'1'} inputValue={'0'} salesInvoice={'SIN0001'}
invoicedAmount={1000} duedate={'1461628800000'}
outstandingBalance={1000} receiptRemaining={1000}
amountAllocated={1000} onChange={mockedOnChange.bind(this,'BS0001')} />
);

wrapper.instance().onFieldChange('amountAllocated', e);
wrapper.update();


})


});

});

最佳答案

Sinon stub / spy /模拟仅适用于函数。在本例中,您尝试模拟一个全局(嵌套)变量,而 Sinon 不是合适的工具。

相反,就像在浏览器中一样,您可以创建一个全局对象来模拟适量的 window 来与您的组件一起使用,这很容易,因为它只访问 window。位置.主机.

因此,在实例化组件之前,请声明以下内容:

global.window = { location : { host : 'example.com' } };

关于unit-testing - 使用Sinon、Mocha、Enzyme 和 React 模拟窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37755589/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com