1

OCMock の初心者で、メソッドが別のクラスから呼び出されているかどうかを確認する必要があります。以下は私のコードです。

 //Creating the OCMockObject
id mockProductRequest = [OCMockObject mockForClass:[ProductRequest class]];
[[mockProductRequest expect] testProductRequest];

//Creating the object where the mock object will be invoked
ProductService *actualService = [[ProductService alloc] init];
[actualService testProductService];

[mockProductRequest verify];

-(void)testProductService{
//Method where the mock object's method is invoked
ProductRequest *request = [[ProductRequest alloc] init];
[request testProductRequest];
}

メソッドが呼び出されなかったという例外を常に受け​​取るようです。私がここで間違っていることを理解するのを手伝ってください。

4

2 に答える 2

3

実際のリクエストを実際のリクエストに置き換える必要がありProductServiceます。たとえば、リクエストを次のProductServiceようなプロパティにすることで、これをアーカイブできます。

@interface ProductService
@property (strong) ProductRequest *request

次に、実際のP​​roductRequestをこのようなモックされたものと交換します

- (void)testProductService {
  id mockProductRequest = [OCMockObject mockForClass:[ProductRequest class]]; 
  [[mockProductRequest expect] testProductRequest];

  ProductService *actualService = [[ProductService alloc] init]; 
  actualService.request = mockProductReqeust;

  // call some method on actualService which invokes the request

  [request testProductRequest];


}
于 2012-10-15T09:47:33.690 に答える
2

モックオブジェクトの目的は、テストするオブジェクトを置き換えることです。ただし、コードでは、メッセージtestProductRequestをMockObjectではなく実際のProductRequestに送信します。

于 2012-10-15T09:42:24.357 に答える