【发布时间】:2019-08-31 19:19:42
【问题描述】:
我正在尝试用酶和Sinon的内部调用编写函数的测试,但我遇到了一些关于内部调用的问题。
这是我的代码:
Chat.js
sendMssage = text => {
const { user } = this.props;
let message = this.messageModel.normalize(text);
this.socketClient.onSendMessage(message, user);
this.addMessage(message);
};
test.js
it('should call sendMessage function', () => {
const wrapper = shallow(<Chat />);
const instance = wrapper.instance();
sinon.spy(instance.socketClient(
message,
user,
));
socketClicent.onSendMessage(message, user);
Instance.sendMessage(message);
});
它会抛出一个错误:
instance.socketClient 不是函数
谁能帮我理解我做错了什么?
【问题讨论】:
-
尝试先将socketClient初始化为sinon fn。然后调用它的实例(和数据),最后调用 sendMessage 的实例。希望它有效。这是在我的头上,如果您弄清楚了,我可以稍后再进行更详细的查看。我在手机上。
-
Chat.js 和 ChatWindow 是同一个组件吗?你介意分享完整的组件代码吗?
-
@etarhan 他们是同一个组件,我已经编辑了这篇文章
-
您是否有机会将组件包装在 HOC 中?
-
@DimitrisEfst 我已经尝试过这种方式......但似乎我所做的不正确
标签: javascript unit-testing testing enzyme sinon