@proRuby

Страница 359 из 1594
Dmitriy
28.12.2016
09:41:48
какая то странная ситуация

в гугле пишу falsy or falsey rspec

и ничего про falsy

expect(actual).to be_falsey # passes if actual is falsy (nil or false)

Google
Alex
28.12.2016
09:42:55
Смотри

Все что в рспеке be_* прозрачно дергает метод *?

Например be_alive - alive?

Теперь вопрос, как разобраться с фалси?

Dmitriy
28.12.2016
09:44:53
ммм, туго что то

false?

Alex
28.12.2016
09:45:06
Блжад

Ну провень есть такой метод или нет

Ilya
28.12.2016
09:45:22
кароче

это одно и то же

алиасы

https://github.com/rspec/rspec-expectations/blob/7f1ed3fd0ee95b94a538696c16351dc8dd63a5bd/lib/rspec/matchers.rb#L326

Alex
28.12.2016
09:46:21
expect(model).to be_alive Тоже самое что expect(model.alive?).to be(true)

Google
Alex
28.12.2016
09:46:32
Так доступнее?

Ilya
28.12.2016
09:46:45
эмммм

Dmitriy
28.12.2016
09:46:46
да!)

Ilya
28.12.2016
09:46:55
model.falsey?

Alex
28.12.2016
09:47:01
Ну

Ilya
28.12.2016
09:47:23
nil.falsey? NoMethodError: undefined method `falsey?' for nil:NilClass

Alex
28.12.2016
09:47:48
В контексте рспека?

Ilya
28.12.2016
09:49:16
я сомневаюсь, что рспек манкипатчит кор классы)

или переопределяет method_missing)

да, так и есть

nil.falsey? NoMethodError: undefined method `falsey?' for nil:NilClass

это в контексте rspec

Dmitriy
28.12.2016
09:52:49
expect(Achievement.first(achievement.id)).to be_empty

как думаете, так выгялядит криво?

Ilya
28.12.2016
09:54:14
немного, как по мне

Dmitriy
28.12.2016
09:54:29
в общем я так понимаю есть полно способов

проверить метод destroy

Ilya
28.12.2016
09:55:03
да, но суть в том, что тебе надо выбрать наиболее точно отражающий конкретно твою ситуацию

чтобы в любых других тест не проходил

Dmitriy
28.12.2016
09:56:07
ну тогда так delete :destroy, params: {id: achievement} expect(Achievement.exists?(achievement.id)).to be_falsy лучше всего думаю, логично выглядит

Google
Ilya
28.12.2016
09:56:46
be false :)

у тебя же там nil ну никак не появится)

Dmitriy
28.12.2016
09:57:39
ну так то да)

без смысленно falsy использовать

Ilya
28.12.2016
09:57:50
ну так и пиши

Alex
28.12.2016
09:58:27
О госпаде

Dmitriy
28.12.2016
09:58:32
expected false to respond to false? or perhaps you meant be false or be_falsey

ощибка)

Alex
28.12.2016
09:58:44
Ты релоад уже попробовал или ты так и будешь с фалси играть?

Dmitriy
28.12.2016
09:59:05
ахах, сейчас попробую)

Alex
28.12.2016
09:59:15
это в контексте rspec
Значит у них спец. Хелпер для этого

ахах, сейчас попробую)
Перепробовал самые экзотические решения вместо нормльных, а о нормальных рекомендациях забыл

Ilya
28.12.2016
09:59:51
Значит у них спец. Хелпер для этого
да, поэтому неверно говорить, что все, что после be это метод + ?

Alex
28.12.2016
10:00:33
Хорошо, в следующий раз распишу формальным языком, устроит?

Ilya
28.12.2016
10:02:56
просто можно добавить небольшое уточнение. Achievement.exists?(achievement.id) вполне нормальный вариант, потому что выполнится запрос в базу.

просто он немного длиннее по количеству символов

Dmitriy
28.12.2016
10:04:08
expect(achievement.reload).to raise_error ActiveRecord::RecordNotFound: Couldn't find Achievement with 'id'=271

а какой матчер можно использовать

?

Ilya
28.12.2016
10:05:45
https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers/raise-error-matcher

Google
Ilya
28.12.2016
10:05:56
ты забыл про {} вместо ()

Dmitriy
28.12.2016
10:07:04
ага работает

Alex
28.12.2016
10:07:29
Ну это два наверное самых честных метода

Впрочем многие по count проверяют и не парятся

Dmitriy
28.12.2016
10:08:08
ну для меня уже какие то знания

что есть различные варианты

Alex
28.12.2016
10:08:39
https://www.relishapp.com/rspec/rspec-expectations/v/2-2/docs/matchers/expect-change

что есть различные варианты
Самое забавное, что когда ты осваиваешь тестирование, ты быстро понимаешь что там еще много с чем надо разобраться

Грамотно тестировать это искусство.

Admin
ERROR: S client not available

Zulkar
28.12.2016
10:10:08
поэтому есть отдельная профессия тестировщика )

Alexander
28.12.2016
10:36:23
походу, я буду впервые осознанно использовать переменные класса (@@)

нужно именно с передачей потомкам, забавно

и не константа

но rubocop против(

Ilya
28.12.2016
10:37:59
а что пишет?

I
28.12.2016
10:40:53
можно отключить это правило =)

Alexander
28.12.2016
10:47:42
можно отключить это правило =)
можно, думал уже об этом, но пока думаю о другом пути)

Google
Alexander
28.12.2016
10:47:56
dynamic constant assigment ему тоже не нравится(

а что пишет?
пишет юзать переменные инстанции класса (@ в классе)

Ilya
28.12.2016
10:50:44
запихни в редис

?

шутка

надо бы почитать

обоснование

Alexander
28.12.2016
10:52:14
обоснование
оно как раз в том, что мне нужно: https://github.com/bbatsov/ruby-style-guide#no-class-vars

всё, сделал вроде через классовый метод модуля, как в прошлый раз с аналогичной проблемой

Ilya
28.12.2016
10:57:03
инстанс переменную?

Alexander
28.12.2016
11:25:12
инстанс переменную?
ну class instance variable для модуля, да) module Module def self.var @var = 'var' end end

Alex
28.12.2016
11:25:42
интересное решение

работает хоть?

Alexander
28.12.2016
11:26:41
работает хоть?
немного удивительно, но да: Module.var

Dmitriy
28.12.2016
11:40:47
p assigns[:achievement] p assigns(:achievement)

выводит как я вижу одно и тоже

Alex
28.12.2016
11:41:47
а не должен, потому что assigns не нужен

Dmitriy
28.12.2016
11:42:47
а как я проверю в методе create идет ли редирект на страницу нового объекта

Alex
28.12.2016
11:43:00
что?

как проверить что контроллер вернул редирект?

Страница 359 из 1594