react-webpack-flux-babel-natliu
Version:
react 全栈
59 lines (51 loc) • 2.24 kB
JavaScript
import React from 'react';
import { expect } from 'chai';
import Clock from '../src/Clock';
import Word from '../src/Word';
import Enzyme, { shallow, mount, render } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
import { JSDOM } from 'jsdom';
import sinon from 'sinon';
if (typeof document === 'undefined') {
const dom = new JSDOM('<!doctype html><html><body></body></html>');
global.window = dom.window;
global.document = dom.window.document;
}
Enzyme.configure({ adapter: new Adapter() });
describe('test use enzyme', function() {
it('test clock shallow rendering', function(){
let clock = shallow(<Clock />);
expect(clock.find(Word).length).to.equal(1);
});
it('test clock dom rendering', function () {
let clock = mount(<Clock format="yyyy-mm-dd" />);
expect(clock.props().format).to.equal('yyyy-mm-dd');
clock.setProps({format:"yyyy-mm-dd HH:MM:ss"});
expect(clock.props().format).to.equal('yyyy-mm-dd HH:MM:ss');
});
it('test clock dom click', function () {
let onButtonClick = sinon.spy();
let clock = mount(<Clock format="yyyy-mm-dd" onButtonClick={onButtonClick} />);
clock.find('button').simulate('click');
expect(onButtonClick).to.have.property('callCount', 1);
expect(clock.find('button').text()).to.equal('点击次数(1)');
clock.find('button').simulate('click');
expect(onButtonClick).to.have.property('callCount', 2);
expect(clock.find('button').text()).to.equal('点击次数(2)');
clock.find('button').simulate('click');
expect(onButtonClick).to.have.property('callCount', 3);
expect(clock.find('button').text()).to.equal('点击次数(3)');
});
it('test clock dom rendered', function() {
let clock = render(<Clock />);
expect(clock.find(".clock-text")).to.have.lengthOf(1);
});
it('test clock dom rendered text', function(){
let clock = render(<Clock />);
expect(clock.text()).to.contain('当地时间');
});
it('test clock dom rendered text', function () {
let clock = render(<Clock format="yyyy" />);
expect(/\d{4}/.test(clock.text())).to.equal(true);
});
});