0

我试图存根协议方法,但它返回为零。请检查以下代码。

@protocol Client
- (Account* _Nullable) login:(nullable NSString*)username
                                        password:(nonnull NSData*)login;

我有一个名为 ClientImplementation 的对象,它实现了 Client 协议。

在我的测试用例中,我在 setup() 中像这样模拟类。

@property(nonatomic, strong) ClientImplementation<Client> *mockClient;
 self.mockClient =  mockObjectAndProtocol([ClientImplementation class],@protocol(Client));

但是当我存根该方法时,它返回为零。

Account *account = [[Account alloc]init];
    account.name = @"fdsafdsfs";
    [given([self.mockClient login:@""passwrod:anything()]) willReturn:account];

我可以知道我做错了什么吗?

4

1 回答 1

0

OCMockito 的默认行为是方法返回nil,除非您另外指定。这是您指定的内容:

given([self.mockClient login:@"" password:anything()]) willReturn:account

这告诉 OCMockito 在使用匹配参数调用account时返回。将匹配任何内容,但只会匹配空字符串。我怀疑您的测试使用不同的登录名进行调用。login:password:anything()@""

given在语句中指定所需的登录名。事实上,如果需要,您可以让不同的登录返回不同的帐户。

于 2018-10-02T01:03:17.517 回答