teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

5

該当のソースコードを補足

2021/08/06 07:50

投稿

_take
_take

スコア1

title CHANGED
File without changes
body CHANGED
@@ -77,10 +77,11 @@
77
77
  export const SelectFile: React.FC<Props> = () => {
78
78
  const rootEl = useRef<HTMLDivElement>(null);
79
79
 
80
- const addFunc = () => { ...省略} // 新たに追加した関数をテストしたい
80
+ const addFunc = (files: File) => { ...省略} // 新たに追加した関数をテストしたい
81
81
 
82
82
  const something = useCallback(
83
+ // ...省略
83
- addFunc();
84
+ const foo = addFunc(files);
84
85
  );
85
86
 
86
87
  useEffect(() => {

4

該当のソースコードを補足

2021/08/06 07:50

投稿

_take
_take

スコア1

title CHANGED
File without changes
body CHANGED
@@ -75,11 +75,24 @@
75
75
 
76
76
  export type Props = {...省略}
77
77
  export const SelectFile: React.FC<Props> = () => {
78
+ const rootEl = useRef<HTMLDivElement>(null);
79
+
78
80
  const addFunc = () => { ...省略} // 新たに追加した関数をテストしたい
79
81
 
80
82
  const something = useCallback(
81
83
  addFunc();
82
84
  );
85
+
86
+ useEffect(() => {
87
+ return () => {
88
+ if (rootEl.current) {
89
+ const { current } = rootEl;
90
+ current.removeEventListener("drop", onDrop);
91
+ // ...省略
92
+ }
93
+ };
94
+ });
95
+
83
96
  // その他useSelector、useEffect、useCallbackなどの記述
84
97
 
85
98
  return (

3

該当のソースコードを補足

2021/08/06 07:44

投稿

_take
_take

スコア1

title CHANGED
File without changes
body CHANGED
@@ -19,6 +19,7 @@
19
19
  テストコードは子コンポーネントだけをテストしようとしています。
20
20
  enzymeの`shallow`も試しましたが同じエラーでテストが止まりました。
21
21
  ```typescript
22
+ //selectFile.spec.tsx
22
23
  import * as React from "react";
23
24
  import { useSelector, useDispatch } from 'react-redux'
24
25
  import { SelectFile } from "./selectFile";
@@ -64,7 +65,7 @@
64
65
  );
65
66
  ```
66
67
  ```React
67
- // テストしたいコンポーネント(一部抜粋)
68
+ // SelectFile.tsx テストしたいコンポーネント(一部抜粋)
68
69
  import styled from "styled-components";
69
70
  import ...省略
70
71
 

2

該当のソースコードを補足

2021/08/06 07:38

投稿

_take
_take

スコア1

title CHANGED
File without changes
body CHANGED
@@ -20,21 +20,77 @@
20
20
  enzymeの`shallow`も試しましたが同じエラーでテストが止まりました。
21
21
  ```typescript
22
22
  import * as React from "react";
23
+ import { useSelector, useDispatch } from 'react-redux'
23
24
  import { SelectFile } from "./selectFile";
24
- import EnzymeToJson from "enzyme-to-json";
25
25
  import { configure, mount } from "enzyme";
26
26
  import * as Adapter from "enzyme-adapter-react-16";
27
+ import EnzymeToJson from "enzyme-to-json";
27
28
 
28
29
  configure({ adapter: new Adapter() });
29
30
 
31
+ // useSelector,useDispatchのエラーが出たのでmock を追加
32
+ jest.mock('src/selectors')
33
+ jest.mock('react-redux')
34
+ const useSelectorMock = useSelector as jest.Mock
35
+ const useDispatchMock = useDispatch as jest.Mock
30
36
  const dummyProps = {
31
37
  select: "basic",
32
38
  };
39
+ describe("dicom-uploader.ts", () => {
40
+ beforeEach(() => {
41
+ useSelectorMock.mockReturnValue(10)
42
+ useDispatchMock.mockReturnValue(jest.fn())
43
+ })
44
+ afterEach(() => {
45
+ jest.resetAllMocks();
46
+ })
33
- it("should render default SelectFile", () => {
47
+ it("should render default SelectFile", () => {
34
- const mounted = mount(<SelectFile {...dummyProps} />);
48
+ const mounted = mount(<SelectFile {...dummyProps} />);
35
- // ↑でテストが止まります
49
+ // ↑でテストが止まります
36
50
  ```
51
+ コンポーネント(エラーなく動作している)
52
+ ```React
53
+ // 親コンポーネント(一部抜粋)
54
+ return (
55
+ <Root>
56
+ {(() => {
57
+ switch(...){
58
+ return <SelectFile />  // 今回テストしたいコンポーネント
59
+ default:
60
+ return <Foo />
61
+ }
62
+ })()}
63
+ </Root>
64
+ );
65
+ ```
66
+ ```React
67
+ // テストしたいコンポーネント(一部抜粋)
68
+ import styled from "styled-components";
69
+ import ...省略
37
70
 
71
+ const Wrapper = styled.div`
72
+ ...省略(cssプロパティ)
73
+ `;
74
+
75
+ export type Props = {...省略}
76
+ export const SelectFile: React.FC<Props> = () => {
77
+ const addFunc = () => { ...省略} // 新たに追加した関数をテストしたい
78
+
79
+ const something = useCallback(
80
+ addFunc();
81
+ );
82
+ // その他useSelector、useEffect、useCallbackなどの記述
83
+
84
+ return (
85
+ <Wrapper ref={rootEl}> <!-- テストではここでエラーとなっている -->
86
+ <!-- HTML要素、コンポーネントなど -->
87
+ </Wrapper>
88
+ );
89
+ };
90
+
91
+ export default DicomUploader;
92
+ ```
93
+
38
94
  ### 試したこと
39
95
  Reactの何かが読み込めていないため`createElement`がないというエラーになっていると考えました。
40
96
  既存の構造の都合で子コンポーネントでは`src`以外の場所からもファイルをimportしているため、パスの問題もあるかと思い、

1

説明について文言修正

2021/08/06 07:34

投稿

_take
_take

スコア1

title CHANGED
File without changes
body CHANGED
@@ -1,7 +1,7 @@
1
1
  ### 前提
2
- React初心者です。
2
+ React・テストコード初心者です。
3
3
  親子関係のあるコンポーネントの中の
4
- 子コンポーネント内の静的メソッドのテストコードを作成しようとしています。(テストコードも初心者です)
4
+ 子コンポーネント内の静的メソッドのテストコードを作成しようとしています。
5
5
  (jestとenzymeを使用)
6
6
  子コンポーネントのマウントの記述でTypeError:となり、stackoverflowなどで検索をしてみたのですが、エラーが解消できませんでした。
7
7
 
@@ -37,8 +37,8 @@
37
37
 
38
38
  ### 試したこと
39
39
  Reactの何かが読み込めていないため`createElement`がないというエラーになっていると考えました。
40
- 既存の構造の都合で`src`以外の場所からもimportしているため、パスの問題もあるかと思い、
40
+ 既存の構造の都合で子コンポーネントでは`src`以外の場所からもファイルをimportしているため、パスの問題もあるかと思い、
41
- jest.config.jsでモジュールのパス設定を変更してみました、エラーは解消されませんでした。
41
+ jest.config.jsでモジュールのパス設定を変更してみました。しかし、エラーは解消されませんでした。
42
42
  ```diff
43
43
  moduleNameMapper: {
44
44
  "^.+\.svg$": "<rootDir>/mocks/icon-mock.tsx",
@@ -54,5 +54,6 @@
54
54
  "react": "16.13.1",
55
55
  "jest": "26.1.0",
56
56
  "enzyme": "3.11.0",
57
+ ```
57
58
  リポジトリ内ではreducerやstoreのテストコードは存在していて、テストはパスしています。
58
59
  スナップショットも動作しています。