QA@IT
«回答へ戻る

エラーメッセージを受けての回答を追記。

5599
 ```
 
 試してないので違ってたらごめんなさい。
+
+---
+
+**追記**
+
+エラーが `unexpected method invoked: chook1` (予期せぬ chook1の呼び出し) なので、chook1の呼び出しもexpectしなければいけなかったのかもしれません。
+(提示してくれた元の mockViewControllerのコードに `[[mockViewController expect] chook1];` を追加すればいいだけだったのかも)。
+

使ったことがないのですが、テストとしては、メソッド二つ(AllstandとsetPenColor)が指定した引数(1と0)で呼ばれたかを期待値としているという事であってますか?

そうするとmockViewCotnrollerが呼ばれた事を検知しないといけないわけですが、
vcmockViewCotnrollerに何も関連性がありませんよね。
ですので vcの chook1を呼び出していますが、これはmockViewCotnrollerの知らないところで起こっていることであり、そこで起きている Allstand, setPenColorの呼び出しも検知できていないのだと思います。
(NSLogが出ているというのもvcの chook1が呼ばれたという事しか示しておらず、それによって mockViewControllerが何かを感知できたかどうかはわからないかと。)

調べてみましたがインスタンスからもmockが作れるそうなので、mockViewControllerはインスタンスを元に作成するといいのではないかと思います。
テストメソッドを以下の様にすればいけるんじゃないでしょうか(setup直すと長くなるので、ViewControllerのモックもテストメソッドの中で作ってしまいました)。

- (void)testChook1
{
    // mockViewControllerの代わりをvcから作成する
    id mockVC = [OCMockObject partialMockForObject:vc];
    [[mockVC expect] Allstand:1];
    [[mockVC expect] setPenColor:0];
    [vc chook1:vc.chook1];
    [mockVC verify];
}

試してないので違ってたらごめんなさい。


追記

エラーが unexpected method invoked: chook1 (予期せぬ chook1の呼び出し) なので、chook1の呼び出しもexpectしなければいけなかったのかもしれません。
(提示してくれた元の mockViewControllerのコードに [[mockViewController expect] chook1]; を追加すればいいだけだったのかも)。

使ったことがないのですが、テストとしては、メソッド二つ(AllstandとsetPenColor)が指定した引数(1と0)で呼ばれたかを期待値としているという事であってますか?

そうすると`mockViewCotnroller`が呼ばれた事を検知しないといけないわけですが、
`vc`と`mockViewCotnroller`に何も関連性がありませんよね。
ですので `vc`の chook1を呼び出していますが、これは`mockViewCotnroller`の知らないところで起こっていることであり、そこで起きている Allstand, setPenColorの呼び出しも検知できていないのだと思います。
(NSLogが出ているというのも`vc`の chook1が呼ばれたという事しか示しておらず、それによって `mockViewController`が何かを感知できたかどうかはわからないかと。)


調べてみましたがインスタンスからもmockが作れるそうなので、`mockViewController`はインスタンスを元に作成するといいのではないかと思います。
テストメソッドを以下の様にすればいけるんじゃないでしょうか(setup直すと長くなるので、`ViewController`のモックもテストメソッドの中で作ってしまいました)。

```objc
- (void)testChook1
{
    // mockViewControllerの代わりをvcから作成する
    id mockVC = [OCMockObject partialMockForObject:vc];
    [[mockVC expect] Allstand:1];
    [[mockVC expect] setPenColor:0];
    [vc chook1:vc.chook1];
    [mockVC verify];
}
```

試してないので違ってたらごめんなさい。

---

**追記**

エラーが `unexpected method invoked: chook1` (予期せぬ chook1の呼び出し) なので、chook1の呼び出しもexpectしなければいけなかったのかもしれません。
(提示してくれた元の mockViewControllerのコードに `[[mockViewController expect] chook1];` を追加すればいいだけだったのかも)。

見栄え修正

5599
-使ったことがないのですが、テストとしては、メソッド二つ(AllstandとsetPenColor)が指定した引数(1と0)で呼ばれたかを期待値としているという事であってますか?
-そうするとmockViewCotnrollerが呼ばれた事を検知しないといけないわけですが、
-vcとmockViewCotnrollerに何も関連性がありませんよね。vcのchook1を呼び出していますがこれをmockViewCotnrollerが検知できていないのだと思います。
-(NSLogが出ているというのもvcのchook1が呼ばれたという事しか示しておらず、それによってmockViewControllerが何かを感知できたことはわからないかと)
+使ったことがないのですが、テストとしては、メソッド二つ(AllstandとsetPenColor)が指定した引数(1と0)で呼ばれたかを期待値としているという事であってますか?
 
-調べてみましたがインスタンスからもmockが作れるそうなので、mockViewControllerはインスタンスを元に作成するといいのではないかと思います。
-テストメソッドを以下の様にすればいけるんじゃないでしょうか(setup直すと長くなるので、ViewControllerのmockもテストメソッドの中で作ってしまいました)。
+そうすると`mockViewCotnroller`が呼ばれた事を検知しないといけないわけですが、
+`vc`と`mockViewCotnroller`に何も関連性がありませんよね。
+ですので `vc`の chook1を呼び出していますが、これは`mockViewCotnroller`の知らないところで起こっていることであり、そこで起きている Allstand, setPenColorの呼び出しも検知できていないのだと思います。
+(NSLogが出ているというのも`vc`の chook1が呼ばれたという事しか示しておらず、それによって `mockViewController`が何かを感知できたかどうかはわからないかと。)
+
+
+調べてみましたがインスタンスからもmockが作れるそうなので、`mockViewController`はインスタンスを元に作成するといいのではないかと思います。
+テストメソッドを以下の様にすればいけるんじゃないでしょうか(setup直すと長くなるので、`ViewController`のモックもテストメソッドの中で作ってしまいました)。
 
 ```objc
 - (void)testChook1

使ったことがないのですが、テストとしては、メソッド二つ(AllstandとsetPenColor)が指定した引数(1と0)で呼ばれたかを期待値としているという事であってますか?

そうするとmockViewCotnrollerが呼ばれた事を検知しないといけないわけですが、
vcmockViewCotnrollerに何も関連性がありませんよね。
ですので vcの chook1を呼び出していますが、これはmockViewCotnrollerの知らないところで起こっていることであり、そこで起きている Allstand, setPenColorの呼び出しも検知できていないのだと思います。
(NSLogが出ているというのもvcの chook1が呼ばれたという事しか示しておらず、それによって mockViewControllerが何かを感知できたかどうかはわからないかと。)

調べてみましたがインスタンスからもmockが作れるそうなので、mockViewControllerはインスタンスを元に作成するといいのではないかと思います。
テストメソッドを以下の様にすればいけるんじゃないでしょうか(setup直すと長くなるので、ViewControllerのモックもテストメソッドの中で作ってしまいました)。

- (void)testChook1
{
    // mockViewControllerの代わりをvcから作成する
    id mockVC = [OCMockObject partialMockForObject:vc];
    [[mockVC expect] Allstand:1];
    [[mockVC expect] setPenColor:0];
    [vc chook1:vc.chook1];
    [mockVC verify];
}

試してないので違ってたらごめんなさい。

使ったことがないのですが、テストとしては、メソッド二つ(AllstandとsetPenColor)が指定した引数(1と0)で呼ばれたかを期待値としているという事であってますか?

そうすると`mockViewCotnroller`が呼ばれた事を検知しないといけないわけですが、
`vc`と`mockViewCotnroller`に何も関連性がありませんよね。
ですので `vc`の chook1を呼び出していますが、これは`mockViewCotnroller`の知らないところで起こっていることであり、そこで起きている Allstand, setPenColorの呼び出しも検知できていないのだと思います。
(NSLogが出ているというのも`vc`の chook1が呼ばれたという事しか示しておらず、それによって `mockViewController`が何かを感知できたかどうかはわからないかと。)


調べてみましたがインスタンスからもmockが作れるそうなので、`mockViewController`はインスタンスを元に作成するといいのではないかと思います。
テストメソッドを以下の様にすればいけるんじゃないでしょうか(setup直すと長くなるので、`ViewController`のモックもテストメソッドの中で作ってしまいました)。

```objc
- (void)testChook1
{
    // mockViewControllerの代わりをvcから作成する
    id mockVC = [OCMockObject partialMockForObject:vc];
    [[mockVC expect] Allstand:1];
    [[mockVC expect] setPenColor:0];
    [vc chook1:vc.chook1];
    [mockVC verify];
}
```

試してないので違ってたらごめんなさい。

回答を投稿

使ったことがないのですが、テストとしては、メソッド二つ(AllstandとsetPenColor)が指定した引数(1と0)で呼ばれたかを期待値としているという事であってますか?
そうするとmockViewCotnrollerが呼ばれた事を検知しないといけないわけですが、
vcとmockViewCotnrollerに何も関連性がありませんよね。vcのchook1を呼び出していますがこれをmockViewCotnrollerが検知できていないのだと思います。
(NSLogが出ているというのもvcのchook1が呼ばれたという事しか示しておらず、それによってmockViewControllerが何かを感知できたことはわからないかと)

調べてみましたがインスタンスからもmockが作れるそうなので、mockViewControllerはインスタンスを元に作成するといいのではないかと思います。
テストメソッドを以下の様にすればいけるんじゃないでしょうか(setup直すと長くなるので、ViewControllerのmockもテストメソッドの中で作ってしまいました)。

- (void)testChook1
{
    // mockViewControllerの代わりをvcから作成する
    id mockVC = [OCMockObject partialMockForObject:vc];
    [[mockVC expect] Allstand:1];
    [[mockVC expect] setPenColor:0];
    [vc chook1:vc.chook1];
    [mockVC verify];
}

試してないので違ってたらごめんなさい。

使ったことがないのですが、テストとしては、メソッド二つ(AllstandとsetPenColor)が指定した引数(1と0)で呼ばれたかを期待値としているという事であってますか?
そうするとmockViewCotnrollerが呼ばれた事を検知しないといけないわけですが、
vcとmockViewCotnrollerに何も関連性がありませんよね。vcのchook1を呼び出していますがこれをmockViewCotnrollerが検知できていないのだと思います。
(NSLogが出ているというのもvcのchook1が呼ばれたという事しか示しておらず、それによってmockViewControllerが何かを感知できたことはわからないかと)

調べてみましたがインスタンスからもmockが作れるそうなので、mockViewControllerはインスタンスを元に作成するといいのではないかと思います。
テストメソッドを以下の様にすればいけるんじゃないでしょうか(setup直すと長くなるので、ViewControllerのmockもテストメソッドの中で作ってしまいました)。

```objc
- (void)testChook1
{
    // mockViewControllerの代わりをvcから作成する
    id mockVC = [OCMockObject partialMockForObject:vc];
    [[mockVC expect] Allstand:1];
    [[mockVC expect] setPenColor:0];
    [vc chook1:vc.chook1];
    [mockVC verify];
}
```

試してないので違ってたらごめんなさい。