Привет.
Вот наткнулся на главной странице developer.salesforce.com (давно не заходил туда, даже дизайн не узнал)
на ссылку на интересную статью по теме Тестирования Apex
Там 2 видео туториала - так что можно особо не напрягать мозг чтением и просто послушать умных людей.
Привет. Вот наткнулся на главной странице developer.salesforce.com (давно не заходил туда, даже дизайн не узнал) на ссылку на интересную статью по теме [b]Тестирования Apex[/b] Там 2 видео туториала - так что можно особо не напрягать мозг чтением и просто послушать умных людей. [url=https://developer.salesforce.com/events/webinars/Apex_Testing?d=70130000000NKm4]10 Principles of Apex Testing[/url]
Ничего нового для ебя не увидел.
Принципы везде одиаковые.
Ничего нового для ебя не увидел. :( Принципы везде одиаковые.
А может есть что добавить что там не увидел?
А может есть что добавить что там не увидел? ;)
Большая часть инфы в презентации уже известна (хотя эти знания и находились долгим методом проб и ошибок).
но много интересных деталей. как говорится "черт сидит в мелочах".
на слайде 23 используются:
- AwesomeTestLib чтоб получить юзера с нужным профайлом.
- UtilityClass устанавливает пермишин
- Аккаунт получают из TestFactory, как выясняется позже - вполне реальной...
просто прекрасно.
domain specific test helper учат помечать @isTest... полезно
как на слайде 34 он использует моск, я так и не понял, но можно позже разобраться..
а еще пишет
Mock anything you have in your service layer.
автор думает, что у нас есть service layer.
Оптимист...
также не понятно о чем это здесь (39):
Write your Visualforce controllers to use a single wrapper object.
Про Continuouis Integration - это очень важно, но я не понимаю как это физически сделать:
every code-change committed to your source repository triggers a full run of the tests. как можно для этого использовать Travis, Drone...
все что я могу - это заранить все тесты (после размещения новых классов) непосредтвенно через стандартный орговый UI или Дев Консоль. Как мне могут помочь эти тулсы? или они работают как плагины в IDE, которые помогают автоматически ранить все тесты и показывают результат?
есть вопросы. и это хорошо
Большая часть инфы в презентации уже известна (хотя эти знания и находились долгим методом проб и ошибок). но много интересных деталей. как говорится "черт сидит в мелочах". на слайде 23 используются: - AwesomeTestLib чтоб получить юзера с нужным профайлом. - UtilityClass устанавливает пермишин - Аккаунт получают из TestFactory, как выясняется позже - вполне реальной... просто прекрасно. domain specific test helper учат помечать @isTest... полезно как на слайде 34 он использует моск, я так и не понял, но можно позже разобраться.. а еще пишет Mock anything you have in your [b]service layer[/b]. автор думает, что у нас есть service layer. Оптимист... также не понятно о чем это здесь (39): Write your Visualforce controllers to use a single wrapper object. Про Continuouis Integration - это очень важно, но я не понимаю как это физически сделать: every code-change committed to your source repository triggers a full run of the tests. как можно для этого использовать Travis, Drone... все что я могу - это заранить все тесты (после размещения новых классов) непосредтвенно через стандартный орговый UI или Дев Консоль. Как мне могут помочь эти тулсы? или они работают как плагины в IDE, которые помогают автоматически ранить все тесты и показывают результат? есть вопросы. и это хорошо
Суть в том что считается плохой практикой использовать на странице домнные объекты, вместо них используются DTO и лучше и удобнее, чтобы это был 1 DTO а не 100500.
Суть в том, что весь твой код хранится в репозитории, ты делаешь изменение, коммитишь его, CI следит за изменениями, заливает их на сервер, запускает тесты.
Это отдельные приложения.
[quote="Den Brown"]также не понятно о чем это здесь (39): Write your Visualforce controllers to use a single wrapper object.[/quote] Суть в том что считается плохой практикой использовать на странице домнные объекты, вместо них используются DTO и лучше и удобнее, чтобы это был 1 DTO а не 100500. [quote="Den Brown"]Про Continuouis Integration - это очень важно, но я не понимаю как это физически сделать: [/quote] Суть в том, что весь твой код хранится в репозитории, ты делаешь изменение, коммитишь его, CI следит за изменениями, заливает их на сервер, запускает тесты. [quote="Den Brown"] Как мне могут помочь эти тулсы? или они работают как плагины в IDE, которые помогают автоматически ранить все тесты и показывают результат?[/quote] Это отдельные приложения.
то есть Контроллер вообще не общается с sObjects (доменные объекты, БД) напрямую? он работает только с каким то промежуточным объектом? а что это дает?
ну как что: reusability. а потом, тестить контроллер можно вообще без создания даже тестовых данных, так получается? а если этот DTO вообще один на всех... очень интересно...
[quote="Gres"] считается плохой практикой использовать на странице домнные объекты, вместо них используются DTO и лучше и удобнее, чтобы это был 1 DTO[/quote] то есть Контроллер вообще не общается с sObjects (доменные объекты, БД) напрямую? он работает только с каким то промежуточным объектом? а что это дает? ну как что: reusability. а потом, тестить контроллер можно вообще без создания даже тестовых данных, так получается? а если этот DTO вообще один на всех... очень интересно...
(удалено)
(удалено)
то есть Контроллер вообще не общается с sObjects (доменные объекты, БД) напрямую? он работает только с каким то промежуточным объектом? а что это дает?
ну как что: reusability. а потом, тестить контроллер можно вообще без создания даже тестовых данных, так получается? а если этот DTO вообще один на всех... очень интересно...
И не только это. В sObject нельзя добавиться свои методы, а рано или поздно это сделать будет надо и начнуться костыли.
[quote="Den Brown"][quote="Gres"] считается плохой практикой использовать на странице домнные объекты, вместо них используются DTO и лучше и удобнее, чтобы это был 1 DTO[/quote] то есть Контроллер вообще не общается с sObjects (доменные объекты, БД) напрямую? он работает только с каким то промежуточным объектом? а что это дает? ну как что: reusability. а потом, тестить контроллер можно вообще без создания даже тестовых данных, так получается? а если этот DTO вообще один на всех... очень интересно...[/quote] И не только это. В sObject нельзя добавиться свои методы, а рано или поздно это сделать будет надо и начнуться костыли.
В sObject нельзя добавиться свои методы, а рано или поздно это сделать будет надо
похоже, вот это самое главное в истории про доменные объекты...
то есть какие-то "базовые", часто востребованные операции не выводятся в сервис классы (и сервис слой), и закладываются в "непосредственной" близости от sObject, в доменном объекте...
[quote="Mike V"]В sObject нельзя добавиться свои методы, а рано или поздно это сделать будет надо[/quote] похоже, вот это самое главное в истории про доменные объекты... то есть какие-то "базовые", часто востребованные операции не выводятся в сервис классы (и сервис слой), и закладываются в "непосредственной" близости от sObject, в доменном объекте...
Domain Object != Data Transfer Object
Domain Object != Data Transfer Object
Domain Object != Data Transfer Object
Gres, дай простой пример:
вот это кастомный sObject,
вот это его доменный класс\объект,
а вот это, дети, Data Transfer Object, который использует дату из того самого sObject
[quote="Gres"]Domain Object != Data Transfer Object[/quote] Gres, дай простой пример: вот это кастомный sObject, вот это его доменный класс\объект, а вот это, дети, Data Transfer Object, который использует дату из того самого sObject
http://force-code.com/unit-testing-tips-tricks-part-1/
Gres, дай простой пример:
http://stackoverflow.com/questions/6154311/what-is-the-difference-between-domain-objects-pocos-and-entities
Domain Object - объект, описывающий к-л бизнесс модель и определяющий ее поведение
Data Transfer Object - объект, предоставляющий обертку над к-л моделью, для удобства работы со связанными данными.
[quote="Den Brown"]Gres, дай простой пример:[/quote] http://stackoverflow.com/questions/6154311/what-is-the-difference-between-domain-objects-pocos-and-entities Domain Object - объект, описывающий к-л бизнесс модель и определяющий ее поведение Data Transfer Object - объект, предоставляющий обертку над к-л моделью, для удобства работы со связанными данными.