Ios OHHTTPStubs与雪松中的AFN网络

Ios OHHTTPStubs与雪松中的AFN网络,ios,afnetworking,cedar-bdd,ohhttpstubs,Ios,Afnetworking,Cedar Bdd,Ohhttpstubs,我正在努力设置一个简单的网络POST请求存根。我已经从OHttpStubs文档和其他在线资源中尽可能多地建模了,但我想我一定遗漏了什么。我希望看到通过onStubActivation方法根据日志调用存根。我的测试看起来像: #import "Cedar.h" #import "OHHTTPStubs.h" #import "Client.h" SPEC_BEGIN(Spec) describe(@"Client", ^{ __block Client *subject; __

我正在努力设置一个简单的网络POST请求存根。我已经从OHttpStubs文档和其他在线资源中尽可能多地建模了,但我想我一定遗漏了什么。我希望看到通过
onStubActivation
方法根据日志调用存根。我的测试看起来像:

#import "Cedar.h"
#import "OHHTTPStubs.h"
#import "Client.h"

SPEC_BEGIN(Spec)

describe(@"Client", ^{
    __block Client *subject;
    __block __weak id<OHHTTPStubsDescriptor> stub;

    beforeEach(^{
        subject = [[Client alloc] init];
        stub = [OHHTTPStubs stubRequestsPassingTest:^BOOL(NSURLRequest *request) {
            return YES;
        } withStubResponse:^OHHTTPStubsResponse*(NSURLRequest *request) {
            return [OHHTTPStubsResponse 
                        responseWithJSONObject:@{} 
                        statusCode:200 
                        headers:@{ @"Access-Token": @"new-token"}];
        }];
        stub.name = @"success-stub";

        [OHHTTPStubs onStubActivation:
            ^(NSURLRequest *request, id<OHHTTPStubsDescriptor> stub) {
                NSLog(@"%@ stubbed by %@.", request.URL, stub.name);
        }];
    });

    describe(@"-signInWithUsername:Password:SuccessBlock:FailureBlock:", ^{
       subjectAction(^{
            [subject signInWithUsername:@"email@domain.com"
                               Password:@"password"
                           SuccessBlock:^void(){NSLog(@"GREAT-SUCCESS");}
                           FailureBlock:^void(){NSLog(@"GREAT-FAILURE");}];
            });
        context(@"when the user/password is valid", ^{
            it(@"should update the auth token", ^{
                subject.token should equal(@"new-token");
            });
        });

    });
});

SPEC_END
#import "Client.h"
#import "AFNetworking.h"

@interface Client ()

@property (nonatomic) NSString *token;
@property (nonatomic) AFHTTPRequestOperationManager *manager;

@end

@implementation Client

- (instancetype)init
{
    self = [super init];
    self.manager = [[AFHTTPRequestOperationManager alloc] init]];
    return self;
}

- (void)signInWithUsername:(NSString *)username
                  Password:(NSString *)password
              SuccessBlock:(void (^)())successBlock
              FailureBlock:(void (^)())failureBlock;
{
    [self.manager POST:@"http://localhost:3000/auth/sign_in" 
            parameters:nil 
               success:^(AFHTTPRequestOperation *operation, id responseObject) {
                   NSLog(@"JSON: %@", responseObject);
                   successBlock();
    }         
               failure:^(AFHTTPRequestOperation *operation, NSError *error) {
                   NSLog(@"Error: %@", error);
                   failureBlock();
    }];
}

@end

我了解到,Cedar不是为处理异步测试而设计的。尽管如此,我认为也许仍然有一种方法可以使用给定的工具来存根http请求。您最终找到了解决方案吗?我和斯佩克塔也有同样的问题/Expecta@MatterGoal我最终没有在我的项目中使用OHttpStubs。我找不到一个有效的解决方案。我最终决定,最好的解决方案是一个自滚网络库,我将它注入到客户机对象中,并可以直接伪造。我了解到,Cedar不是为处理异步测试而设计的。尽管如此,我认为也许仍然有一种方法可以使用给定的工具来存根http请求。您最终找到了解决方案吗?我和斯佩克塔也有同样的问题/Expecta@MatterGoal我最终没有在我的项目中使用OHttpStubs。我找不到一个有效的解决方案。我最终决定,最好的解决方案是一个自我推出的网络库,我将它注入到客户机对象中,并可以直接伪造出来。