BDD в Objective C

SVG не поддерживаются в React Native в этой точке. Есть несколько библиотек, в которых они играли с идеей, но я не знаю, что любой из них «готов к производству»

https://github.com/brentvatne/react-native -svg

https://github.com/aksonov/react-native-svg-elements

27
задан Bragi Ragnarson 23 August 2009 в 13:00
поделиться

5 ответов

Есть относительно новый проект под названием uispec , который был вдохновлен тестированием DSL RSpec. Пример спецификации выглядит так:

#import "DescribeEmployeeAdmin.h"
#import "SpecHelper.h"

@implementation DescribeEmployeeAdmin

-(void)before {
  //login as default admin before each example
  [SpecHelper loginAsAdmin];
}

-(void)after {
  //logout after each example
  [SpecHelper logout];
}

-(void)itShouldHaveDefaultUsers {
  //Check that all default users are in list
  [[app.tableView.label text:@"Larry Stooge"] should].exist;
  [[app.tableView.label text:@"Curly Stooge"] should].exist;
  [[app.tableView.label text:@"Moe Stooge"] should].exist;
}

-(void)itShouldAddAUser {
  //Click the + button
  [app.navigationButton touch];

  //Set the form fields.
  //Also ".with" is optional so we here we can show the different syntax
  [[app.textField.with placeholder:@"First Name"] setText:@"Brian"];
  [[app.textField.with placeholder:@"Last Name"] setText:@"Knorr"];
  [[app.textField.with placeholder:@"Email"] setText:@"b@g.com"];
  [[app.textField placeholder:@"Username"] setText:@"bkuser"];
  [[app.textField placeholder:@"Password"] setText:@"test"];
  [[app.textField placeholder:@"Confirm"] setText:@"test"];

  //Click the Save button
  [[app.navigationButton.label text:@"Save"] touch];

  //Make sure the error alert view doesn't appear
  [app timeout:1].alertView.should.not.exist;

  //User list should now have a new entry
  [[app.tableView.label text:@"Brian Knorr"] should].exist;
}

@end

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

17
ответ дан 28 November 2019 в 04:43
поделиться

Вы можете взглянуть на BDD От идеи до приложения , где вы увидите пример использования калебаса.

3
ответ дан user1829404 14 October 2019 в 13:16
поделиться

Ничто не мешает вам указать в качестве префикса для вашего метода тестирования слово Should. Я сделал это с помощью NUnit на C #.

0
ответ дан 28 November 2019 в 04:43
поделиться

JSLint - это один из способов очистки наш код в нашем приложении. Это помогает во время проверки кода и принятия решения о том, хорошо написана сторонняя библиотека или нет. Мы также используем проверки IntelliJ IDEA, которые по большей части предупреждают о тех же проблемах. Мы также используем jQuery, который помог очистить большой объем кода.

Это помогает во время проверки кода и принятия решения о том, хорошо написана сторонняя библиотека или нет. Мы также используем проверки IntelliJ IDEA, которые по большей части предупреждают о тех же проблемах. Мы также используем jQuery, который помог очистить большой объем кода.

Это помогает во время проверки кода и принятия решения о том, хорошо написана сторонняя библиотека или нет. Мы также используем проверки IntelliJ IDEA, которые по большей части предупреждают о тех же проблемах. Мы также используем jQuery, который помог очистить большой объем кода.

Я обнаружу, что Model View Controller (MVC) часто реализуется с некоторой связью между представлением и некоторой моделью какого-либо типа - таким образом, данное представление специально предназначено для обеспечения визуализации данного объекта (модели).

Шаблон презентационного представления модели вы обычно обнаруживаете, что презентатор заботится о работе с моделью и решает, какая информация из нее будет необходима для формирования какой-либо визуализации.

На этой диаграмме стрелки представляют зависимости:

MVC and MVP dependencies

Обычно вы слышите, что обсуждение этого шаблона возникает при обсуждении инфраструктуры ASP.NET MVC, и сталкиваетесь с информацией о шаблоне MVP и его реализации в ASP.NET WebForms. По моему опыту, часто считается, что WebForms сам по себе является структурой с шаблоном MVP - это неправда. я плохо знаком с препроцессором C ...

Вам, вероятно, также придется использовать #define , чтобы ваши макросы передавали правильные значения для __ FILE __ и __ LINE __ , когда тесты BDD не проходят. Например, вам, возможно, придется сделать что-то вроде этого:

@interface NSObject (BehaviorDrivenDevelopment)
- (void)shouldBeValidInFile:(const char *)file line:(int)line;
@end

#define shouldBeValid  shouldBeValidInFile:__FILE__ line:__LINE__

Таким образом, вы могли бы вызвать его так:

[[someObject methodUnderTest:argument] shouldBeValid];

Код, который видит компилятор, будет следующим:

[[someObject methodUnderTest:argument] shouldBeValidInFile:__FILE__ line:__LINE__];

__ FILE __ и ] __ LINE __ макросы препроцессора будут расширены до текущего файла и строки в вашем исходном тестовом файле.

Таким образом, когда у вас есть неудачный тест, он может передать соответствующую информацию в SenTestingKit для отправки обратно в Xcode. Ошибка будет правильно отображаться в окне результатов сборки, и щелкнув по ней, вы перейдете к точному месту ошибки в ваших тестах.

.

Вероятно, вам также придется использовать #define , чтобы ваши макросы передавали правильные значения для __ FILE __ и __ LINE __ при тестировании BDD. потерпеть неудачу. Например, вам, возможно, придется сделать что-то вроде этого:

@interface NSObject (BehaviorDrivenDevelopment)
- (void)shouldBeValidInFile:(const char *)file line:(int)line;
@end

#define shouldBeValid  shouldBeValidInFile:__FILE__ line:__LINE__

Таким образом, вы бы вызывали его так:

[[someObject methodUnderTest:argument] shouldBeValid];

Код, который видит компилятор, будет следующим:

[[someObject methodUnderTest:argument] shouldBeValidInFile:__FILE__ line:__LINE__];

__ FILE __ и ] __ LINE __ макросы препроцессора будут расширены до текущего файла и строки в вашем исходном тестовом файле.

Таким образом, когда у вас есть неудачный тест, он может передать соответствующую информацию в SenTestingKit для отправки обратно в Xcode. Ошибка будет правильно отображаться в окне результатов сборки, и щелкнув по ней, вы перейдете к точному месту ошибки в ваших тестах.

.

Вероятно, вам также придется использовать #define , чтобы ваши макросы передавали правильные значения для __ FILE __ и __ LINE __ при тестировании BDD. потерпеть неудачу. Например, вам, возможно, придется сделать что-то вроде этого:

@interface NSObject (BehaviorDrivenDevelopment)
- (void)shouldBeValidInFile:(const char *)file line:(int)line;
@end

#define shouldBeValid  shouldBeValidInFile:__FILE__ line:__LINE__

Таким образом, вы могли бы вызвать его так:

[[someObject methodUnderTest:argument] shouldBeValid];

Код, который видит компилятор, будет следующим:

[[someObject methodUnderTest:argument] shouldBeValidInFile:__FILE__ line:__LINE__];

__ FILE __ и ] __ LINE __ макросы препроцессора будут расширены до текущего файла и строки в вашем исходном тестовом файле.

Таким образом, когда у вас есть неудачный тест, он может передать соответствующую информацию в SenTestingKit для отправки обратно в Xcode. Ошибка будет правильно отображаться в окне результатов сборки, и щелкнув ее, вы перейдете к точному месту сбоя в ваших тестах.

Возможно, вам также придется использовать #define , чтобы ваши макросы передавали правильные значения для __ FILE __ и __ LINE __ , когда ваши тесты BDD терпят неудачу. Например, вам, возможно, придется сделать что-то вроде этого:

@interface NSObject (BehaviorDrivenDevelopment)
- (void)shouldBeValidInFile:(const char *)file line:(int)line;
@end

#define shouldBeValid  shouldBeValidInFile:__FILE__ line:__LINE__

Таким образом, вы бы вызывали его так:

[[someObject methodUnderTest:argument] shouldBeValid];

Код, который видит компилятор, будет следующим:

[[someObject methodUnderTest:argument] shouldBeValidInFile:__FILE__ line:__LINE__];

__ FILE __ и ] __ LINE __ макросы препроцессора будут расширены до текущего файла и строки в вашем исходном тестовом файле.

Таким образом, когда у вас есть неудачный тест, он может передать соответствующую информацию в SenTestingKit для отправки обратно в Xcode. Ошибка будет правильно отображаться в окне результатов сборки, и щелкнув ее, вы перейдете к точному месту сбоя в ваших тестах.

Возможно, вам также придется использовать #define , чтобы ваши макросы передавали правильные значения для __ FILE __ и __ LINE __ , когда ваши тесты BDD терпят неудачу. Например, вам, возможно, придется сделать что-то вроде этого:

@interface NSObject (BehaviorDrivenDevelopment)
- (void)shouldBeValidInFile:(const char *)file line:(int)line;
@end

#define shouldBeValid  shouldBeValidInFile:__FILE__ line:__LINE__

Таким образом, вы могли бы вызвать его так:

[[someObject methodUnderTest:argument] shouldBeValid];

Код, который видит компилятор, будет следующим:

[[someObject methodUnderTest:argument] shouldBeValidInFile:__FILE__ line:__LINE__];

__ FILE __ и ] __ LINE __ макросы препроцессора будут расширены до текущего файла и строки в вашем исходном тестовом файле.

Таким образом, когда у вас есть неудачный тест, он может передать соответствующую информацию в SenTestingKit для отправки обратно в Xcode. Ошибка будет правильно отображаться в окне результатов сборки, и щелкнув ее, вы перейдете к точному месту сбоя в ваших тестах.

[[someObject methodUnderTest:argument] shouldBeValid];

Код, который видит компилятор, будет следующим:

[[someObject methodUnderTest:argument] shouldBeValidInFile:__FILE__ line:__LINE__];

Макросы препроцессора __ FILE __ и __ LINE __ будут расширены до текущего файла и строки в вашем тестовом исходном файле.

Таким образом, если у вас действительно есть неудачный тест, он может передать соответствующую информацию в SenTestingKit для отправки обратно в Xcode. Ошибка будет правильно отображаться в окне результатов сборки, и щелкнув ее, вы перейдете к точному месту сбоя в ваших тестах.

[[someObject methodUnderTest:argument] shouldBeValid];

Код, который видит компилятор, будет следующим:

[[someObject methodUnderTest:argument] shouldBeValidInFile:__FILE__ line:__LINE__];

Макросы препроцессора __ FILE __ и __ LINE __ будут расширены до текущего файла и строки в вашем тестовом исходном файле.

Таким образом, если у вас действительно есть неудачный тест, он может передать соответствующую информацию в SenTestingKit для отправки обратно в Xcode. Ошибка будет правильно отображаться в окне результатов сборки, и щелкнув ее, вы перейдете к точному месту сбоя в ваших тестах.

8
ответ дан 28 November 2019 в 04:43
поделиться

Адам Миллиган из Pivotal Labs создал структуру BDD для Objective-C под названием Cedar , которая нацелена как на Cocoa, так и на Cocoa Touch. Он использует блоки аналогично RSpec. Вот пример спецификации:

SPEC_BEGIN(FooSpecs)

sharedExamplesFor(@"a similarly-behaving thing", ^(NSDictionary *context) {
    it(@"should do something common", ^{
        ...
    });
});

NSDictionary *context = [NSDictionary dictionary];

describe(@"Something that shares behavior", ^{
    itShouldBehaveLike(@"a similarly-behaving thing", context);
});

describe(@"Something else that shares behavior", ^{
    itShouldBehaveLike(@"a similarly-behaving thing", context);
});

SPEC_END
14
ответ дан 28 November 2019 в 04:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: