首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何用帕拉姆测试一个传奇故事?

我如何用帕拉姆测试一个传奇故事?
EN

Stack Overflow用户
提问于 2018-02-15 10:33:53
回答 1查看 1.1K关注 0票数 1

第一次学习如何测试一个传奇(使用Jest)。我的传奇需要一个传递给它的对象,其中包含一个userId,但是我得到了这个错误,这个错误明显地突出了参数中的一个区别:

代码语言:javascript
复制
Expected value to equal:
  {"@@redux-saga/IO": true, "CALL": {"args": [], "context": null, "fn": [Function getClassrooms]}}
Received:
  {"@@redux-saga/IO": true, "CALL": {"args": ["1"], "context": null, "fn": [Function getClassrooms]}}

我有:

代码语言:javascript
复制
import { call, put } from 'redux-saga/effects';

import { theSaga } from './saga.js';
import { apiCall } from './api';

it('should do something', () => {
  const data = {
    payload: {
      userId: '1'
    }
  };

  const generator = theSaga(data);

  expect(generator.next().value)
    .toEqual(call(apiCall));

});

不知道我怎么才能让这两个人匹配?我试过把台词改为:

代码语言:javascript
复制
.toEqual(call(apiCall('1'));

但这会给函数带来错误,因为它不是一个承诺。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-15 19:45:11

call是一个saga函数,它返回由saga中间件执行的动作。call期望函数的参数被附加到它的参数中,所以call(apiCall,1)。这样做的好处是,可以通过简单地遍历每一步并检查是否生成了预期的操作来测试生成器。expect(generator.next().value).toEqual(call(apiCall,1))

尽管如此,我认为用这种方式测试生成器并没有多大用处。您希望测试行为,而不是如何实现生成器。在不同的情况下,你会把一些东西放进去,并期望得到一些东西。测试像expect(generator.next().value).toEqual(call(apiCall,1))这样的东西就像在说:我实际上已经编程了,测试证实了这一点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48805078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档