小编Grz*_*lik的帖子

尝试链接本地 npm 模块时出现 E404

尝试npm按照文档链接本地模块时出现 404 错误

在本地模块目录中,它似乎正确地创建了一个全局链接:

$ npm link
/usr/local/lib/node_modules/my-module-name -> /Users/XXX/my-module-directory/my-module-name
Run Code Online (Sandbox Code Playgroud)

但是,在那之后我尝试从其他项目目录链接它时,我收到 404 错误:

$ npm link my-module-name
npm ERR! code E404
npm ERR! 404 Not Found: my-module-name@latest
Run Code Online (Sandbox Code Playgroud)

我试图取消链接模块并再次链接或更改版本,但它不起作用。

这是完整的日志:

0 info it worked if it ends with ok
1 verbose cli [ '/Users/XXX/.nvm/versions/node/v8.2.1/bin/node',
1 verbose cli   '/Users/XXX/.nvm/versions/node/v8.2.1/bin/npm',
1 verbose cli   'link',
1 verbose cli   'my-module-name' ]
2 info using npm@5.3.0
3 info using node@v8.2.1
4 verbose npm-session 7d82e8d8dc1bdc83
5 silly install loadCurrentTree
6 silly install readGlobalPackageData …
Run Code Online (Sandbox Code Playgroud)

node.js npm

5
推荐指数
1
解决办法
2734
查看次数

如何在 Jest 快照中使用 Enzyme Shallow

我正在尝试使用来自酶的浅层,并同时使用来自开玩笑的快照

我面临的问题是我需要使用setState()from从状态中更改某些内容,然后将结果与快照进行匹配。

查看我的组件的代码:

....

getPrevProduct = () => {
  const key = this.state.indexCurrent > 0 &&
   this.productsKeys[this.state.indexCurrent - 1];

  let product = null;

  if (key) {
    product = this.props.products[key];
  }

  return product;
}

renderPrev = () => this.getPrevProduct() && <PrevButton />;

render() {
  return (
    <div>
      ...
      {this.renderPrev()}
      ...
    <div>
  )
}
Run Code Online (Sandbox Code Playgroud)

前面的代码检查从 currentIndex 中的 props 传递的产品是否存在。

这就是为什么我需要 Enzyme 来改变状态。然后,如果匹配,<PrevButton />则必须呈现。

这个测试是当我想将组件与快照匹配时:

const nextProps = {
  products: { …
Run Code Online (Sandbox Code Playgroud)

javascript unit-testing reactjs jestjs enzyme

5
推荐指数
3
解决办法
3789
查看次数

使用不可变数据结构时,Jest模拟函数参数不匹配

当尝试使用Jest的.toHaveBeenCalledWith()方法测试传递给函数的参数时,如果我使用ImmutableJS库处理不可变数据结构,则测试失败.测试失败,消息类似于:

Expected mock function to have been called with:
  [{"foo": true, "bar": "baz"}]
But it was called with:
  [{"foo": true, "bar": "baz"}]
Run Code Online (Sandbox Code Playgroud)

测试看起来类似于:

const expectedArgs = Map({
  foo: true,
  bar: 'baz'
});

const foo = jest.fn();
bar();
expect(foo).toHaveBeenCalledWith(expectedArgs);
Run Code Online (Sandbox Code Playgroud)

和类似的功能:

const bar = () => {
  const baz = Map({});
  const bazModified = baz.set('foo', true).set('bar', 'baz');
  foo(bazModified);
}
Run Code Online (Sandbox Code Playgroud)

我意识到如果我以这种方式传递参数一切正常:

const bar = () => {
  const baz = Map({
    foo: true,
    bar: 'baz'
  });
  foo(baz);
}
Run Code Online (Sandbox Code Playgroud)

问题是这是我的函数逻辑的一个很大的简化,我必须使用.set来构造对象.有没有人知道为什么.set的方法无法正确评估?

javascript jestjs immutable.js

3
推荐指数
1
解决办法
3448
查看次数