玩笑不变

时间:2018-12-25 20:06:29

标签: reactjs jestjs

使用笑话时,react hooks in beta的简单使用不起作用,并导致错误

不变违规:只能在函数组件的主体内部调用挂钩。

尽管环顾四周,但我看不到带有react钩子的Jest的工作示例。是的,我知道它是测试版,但让我们现在对其进行标记。

https://github.com/ghinks/jest-react-hook-issue.git

const MyDiv = () => {
  const [count, setCount] = useState(0)
  const clickHandler = () => { setCount(count + 1); 
  console.log(`clicked ${count}`) }
  return (
    <div onClick={clickHandler}>
      ClickMe {count}
    </div>
  )
}

甚至简单的测试

import { MyDiv } from './App';

describe('Test Component using hooks', () => {
  test('MyDiv', () => {
    const div = MyDiv();
    expect(div).toMatchSnapshot();
  })
});

将因不变错误而失败。

error image

我希望这能真正起作用。

2 个答案:

答案 0 :(得分:0)

问题是错误所指示的内容。功能组件不应直接调用。

应为the reference所示:

import renderer from 'react-test-renderer';

...
const myDiv = renderer.create(<MyDiv/>).toJSON();
expect(myDiv).toMatchSnapshot();

答案 1 :(得分:0)

看起来像对

的简单更改
randn('state', 100)

%Problem and method parameters
S=10; E=9; sigma=0.1; r=0.06; T=1;
Dt=1e-3; N=T/Dt; M=2^17;h=10^(-4);

xi = randn(M,1);
Sfinal = S*exp((r-0.5*sigma^2)*T+sigma*sqrt(T).*xi);
S_h = (S+h)*exp((r-0.5*sigma^2)*T+sigma*sqrt(T).*xi);
delta = exp(-r*T).*(max(Sfinal-E,0)-max(S_h-E,0))/h;

aM=mean(delta); 
bM=std(delta);
conf=[aM-1.96*bM/sqrt(M),aM+1.96*bM/sqrt(M)]

解决此问题