Локализации не загружаются в XCTest?

У меня есть схема в Xcode, в которой настроен только тест. И эта схема указывает на цель, в которой есть все мои тесты (это цель Cocoa Unit Testing Bundle для OS X).

Итак, я использую Command + U, чтобы запустить все эти тесты, и все работает нормально. Однако для нескольких тестов требуется доступ к ресурсам локализации. Я добавил эти ресурсы в свою цель и даже проверил в полученном встроенном двоичном файле наличие ресурсов локализации.

Однако код не видит ресурсов, поэтому, когда любой тест выполняет NSLocalizedString, он возвращает ключ вместо локализованной строки.

Есть ли что-то особенное, что мне нужно сделать, чтобы тесты увидели эти ресурсы?


person Victor Ronin    schedule 08.11.2013    source источник


Ответы (1)


Дата сообщения по этому вопросу довольно старая, но я столкнулся с той же проблемой. Я нашел эту замечательную статью в блоге, в которой описана эта проблема и есть отличное решение.

У него есть два решения, первое (у меня не сработало):

заменять

[NSBundle mainBundle]

с

[NSBundle bundleForClass:[self class]]

Второе решение (очень хорошо сработало с использованием OCMock):

static id _mockNSBundle;

+(void)setUp {
    _mockNSBundle = [OCMockObject niceMockForClass:[NSBundle class]];
    NSBundle *correctMainBundle = [NSBundle bundleForClass:[self class]];
    [[[[_mockNSBundle stub] classMethod] andReturn:correctMainBundle] mainBundle];
}

+(void)tearDown {
    [_mockNSBundle stopMocking];
    _mockNSBundle = nil;
}

Надеюсь, это поможет людям, которые проверят этот пост в будущем.

person jc555    schedule 08.08.2014
comment