【发布时间】:2017-09-01 06:07:28
【问题描述】:
[已编辑]:我已经用 promise 方式更改了我的代码。
我正在用 facebook 创建的 this starter 编写反应,我是一个测试新手。
现在我有一个关于图像的组件,它有一个检查图像大小的功能:
import React, { Component } from 'react';
class ImagePart extends Component {
.....
// check size.
checkSize(src, width, height){
this.loadImg(src)
.then((obj) => {
return (obj.width >= width && obj.height >= height)
? true : false;
})
.catch((msg)=> {
dosomething
});
}
// load image and return a promise.
loadImg(src){
return new Promise((resolve, reject) => {
let imageObj = new Image();
imageObj.onload = (evt) => {
resolve(evt.target);
}
imageObj.error = (err) =>{
reject(err);
}
imageObj.src = src;
})
}
.....
}
并测试sn-p:
import React from 'react';
import ReactDOM from 'react-dom';
import ImagePart from './ImagePart';
it('checking image size without error', () => {
const image = new ImagePart();
const img300_300 = 'https://someImage.png';
expect(image.loadImg(img300_300).width).resolves.toBe(300);
// ??? test checkSize
});
运行测试后,我得到了这个错误:
TypeError: 无法读取未定义的属性“toBe”
问题是:
- 如何以正确的方式测试`loadImg?
- 测试 checkSize 的一般模式是什么?
谢谢。
【问题讨论】:
标签: javascript reactjs testing jestjs jsdom