尝试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) 我面临的问题是我需要使用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) 当尝试使用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 ×2
jestjs ×2
enzyme ×1
immutable.js ×1
node.js ×1
npm ×1
reactjs ×1
unit-testing ×1