 Saya akan berkongsi sebuah rekod di sini. Helo. Hai. Nama saya Michael. Saya akan berkongsi sedikit tentang sesuatu yang mudah. Saya harap sangat mudah untuk memahami 5 berita. 5 berita. Saya rasa itu akan menjadi 5 berita. Pertama, sebuah yang mudah. Jika anda membuat sebuah hash baru, anda dapat menghidupkan vali default untuk menerimanya ke dalam. Jika tidak menerimanya, anda akan menerimanya vali default ini. Apabila anda menghidupkannya, atau apabila anda hanya mempunyai a.default, anda akan menerimanya ke dalam. Jika ia tidak menerimanya, atau jika ia tidak menerimanya, anda akan menerimanya vali itu. Jadi, ini sesuatu yang saya belajar sepenuhnya. Faham? Sebuah code sebenar. Ini lebih besar. Baiklah. Jadi hash.new, saya akan menghidupkan hal yang ada di sini. Ini bukan jenis keranak yang anda mencari. Jika saya membuat ini, hash masih menyerimanya. Jika saya cuba mendapat sesuatu seperti, Hello It's basically these are not the drawings you're looking for But if I do set it Over here, I set it to Right? So if I ask this again It returns R2 If I do something else I look Say, these are not the drawings you're looking for So it's pretty cool You can also change it dynamically It's like a default You can change this too So if I do So it kind of makes sense, I hope So it's pretty cool If you're creating a new hash And you're not sure what to set inside Or you're creating an API For example, for mobile phones I think in the past I've written Backend APIs for phones And if the phone receives And no exception, you crash So if you want it to return a string But it falls whenever you call So it's kind of cool So this is something interesting I should get a chair Or something else I also worry with numbers So if you default to 1 And plus things Yeah, you can also pass in a proc You can pass in a soft proc And you basically do that Which is kind of cool Something I learned recently So that's one Second thing I want to show you There's one thing called AESM Act as state machine So for example, you will have a column In your database, it's called status So if it's active, for example You've ever blog post you're publishing Active or inactive So that's the Boolean state But why it becomes complicated Say you need to have an approval process That you need to go into pending publishing Pending approval And then approve and publish And then cancel So if you use a gem Like AESM You can basically declare In your code The different states That are valid Different states And state transitions That will be required For example, in this example The states is sleeping Running and cleaning The initial state will be sleeping Dot run You'll basically trigger an event Which will transit from sleeping to running From something like that But it's restricted to this So if you try to do it from running to You want to switch it If it's in a running state You can't run again It will show an exception Because it will not allow you to move into that state Which is pretty cool I think in the past we have written Quite a fair bit of boilerplate code To try to simulate this kind of state transition So if you're writing something That requires complex States That you can go through This is a very cool gem If you want it to return A false by default You can do that too I'll show you a code that we wrote Just one Yes it is Some code that we have Is it okay? Can you see it? It also works with Rails enums So we have enums like this Enums like this Proof Pending approval Pending approval And so on It actually works with that as well So this is how it roughly looks like And then you have States that There are even callbacks Before something happened It triggers something like in this case The state you send out email So you write events Along with this Change in the state Very good By default ASM will show an exception You try to move to the wrong state But if you're writing some legacy code You cannot show an exception You want to show a false in state You can do that by turning off By passing in whiny transitions If it's false So this is Something nice That's my second tip You can check it out at github github.com So it's a Ruby gem So you can just include it as part Of your Rails applications Documentation is pretty awesome Here as well So that's the second tip For guys who are writing Kabybara tests You know how frustrating it is When your page change Like an ID change And you got to go in and find a piece of code That points to that button That clicks it, stuff like that So you got to For example, you have a really huge test suite You go in and change 50 files Where they are pointing to ID login Where they have changed the login link And you go to look for 50 files And change it, it's crazy So psychrism helps By turning your page into A page object So it looks something like So Here's an example of a Kabybara test In aspect So I'm logging into a page And instead of So basically, when I log into this page I would instantiate a new object And this object would basically have An action called load The URL So the page looks something like this Index Right, so the index page Look something like this We have the URL defined And you have elements That you can define it as well Like say a login link So when the DOM changes Like a designer go in Commit a new style Or he likes to add some fancy CSS To it and So whatever And say I'll just open my psychrism page And I'll just change The link from login To say login link Fixes the problem So it's one place Where you identify elements That are clickable You still have access To the full Kabybara object So you can still do all the actions They can do with a Kabybara object You can even define methods Like say you want to do something On the page You can encapsulate it Into one method Inside the page object So when you say Page.loginnow Means you would click on Remember and log in Now for example as a method name You actually can encapsulate A few actions Such as click on remember me So you can encapsulate all this Into one method So your Kabybara scripts Will basically be a very short Very short In the sense you just be one line And say please lock me in Encapsulate functions Into one method So guys We're writing Kabybara I've written some tests In the past which improves An existing Kabybara test By One third Improve performance by one third For example When you write Kabybara test Usually you have to look for the elements And do something to it So with site prism It actually pre Pre scans the page For the elements that you're looking for So you don't have to keep scanning the page Over and looking for the elements That you need Kabybara Ya Dokumentation super awesome Um I've lost anyone yet I'm sure It comes to a very nice Wait DSL So wait for menu So home the wait for menu So there's a wait for Wait for prefix Wait for element to appear On the page first So there's wait for Functionality here is pretty good You can I think it follows Kabybara default wait time Ya Ya it's basically doing a loop Ya Ya Ya Ya Ya Ya Ya Ya Ya You You I Do To yang kita gunakan di New. Di New, kita gunakan T-Markz untuk kerja hari ini. T-Markz adalah terminal multiplexer yang boleh digunakan. Kami gunakan Vim agresif-agresif. Apabila anda gunakan Vim dan T-Markz, ada perkara yang bagus untuk membuat panel. Biar saya menunjukkan. Di sini, pada test ini, saya mempunyai beberapa panel di belakang. Apa yang anda lihat di sini adalah T-Markz. Apa yang anda lihat di sini adalah T-Markz. Pertama T-Markz, kedua T-Markz, dan panel di lantai adalah T-Markz. Dan kemudian ada T-Markz. Pertama T-Markz adalah anda dapat melihat kode T-Markz dan mungkin mencari test anda pada masa yang sama. Dan sesuatu yang kita telah melakukan secara internasinya adalah kita mempunyai beberapa perkara. Satu-satunya adalah T-Markz. T-Markz membantu anda mencari... T-Markz adalah kita mencari perangkatan yang berbeda. Seperti contoh ini, saya dapat mencari perangkatan saya. Seperti contoh ini adalah perangkatan yang berbeda. T-Markz A beri saya perangkatan. Dan saya hanya ingin mencari perangkatan yang berbeda. Saya dapat mencari perangkatan R-N. Apa ini? Apa yang berlaku di sini? Tidak. Baiklah. Tidak. Ia sepatutnya bekerja. Ia bekerja. Ia bekerja. Ia bekerja. Ia bekerja. Ia bekerja juga. Apa yang berlaku di sini? Ia adalah demonstrasi negatif. Saya minta maaf. Jika saya melakukan perangkatan R-N, anda akan mencari perangkatan yang berbeda pada perangkatan yang berbeda. Sebenarnya, apa yang saya lakukan adalah mencari perangkatan saya. Anda akan melihat jauh-jauh-jauh apabila ada perangkatan yang berbeda di sana. Jadi jika saya dapat melakukan perangkatan yang berbeda pada perangkatan R-N, anda harus melakukan perangkatan yang berbeda di sini. Jika anda dapat melihat perangkatan R-N, anda dapat melihat perangkatan R-N. Anda akan menonton perangkatan R-N mengambil jauh-jauh yang berbeda. Kalaulah anda tidak melakukan perangkatan R-U C-I? Tidak. Ya. Ia sangat terang. Saya minta maaf. Jadi, kita membuat perangkatan yang berbeda dengan beberapa perkara. Yang pertama adalah dengan Vim Aspect yang biar anda mempunyai keystroke untuk menggunakan Test Aspect Dan juga mempunyai VIMAX yang biar saya mempunyai Command and Call Awak sangat berminat saya boleh cuba post ini di tempat yang anda boleh lihat Ya, jadi itu adalah setup Vim Dan anda akan menikmati bagaimana, dalam setup Vim, anda boleh pergi ke... Vim & Vim Config, ada banyak kebanyakan keystroke dan perkara yang kita mempunyai Ya, ada branch-nya untuk Singapura Okey, saya rasa ada 4 perkara Yang terakhir adalah software yang di luar sana adalah MountBank MountBank yang digunakan untuk anda melalui test wire Jadi, bagaimana jika anda menggunakan aplikasi, ia menyebabkan anda untuk menghubungi penggunaan Dan anda menggunakan API Facebook Jadi, apa yang anda boleh lakukan adalah, anda boleh mempunyai... Anda boleh memulakan server dan menggunakan... Bersama, MountBank adalah node.js server yang anda boleh dinamikannya Apa yang anda boleh dengannya, dan mana yang anda boleh menikmati Dan menerima jawapan yang anda perlukan Dan kemudian, saya menulis jam untuk ini Jadi, ini adalah MountBank Dan saya menulis jam yang dipanggil MountBank Dan kreatifnya, yang dipanggil MountBank Yang beri anda... Sebenarnya, untuk beritahu server ini untuk mendengar bahagian atau mendengar URL Dan beri jawapan yang anda boleh Anda perlu menggunakan perlukan untuk masyarakat dan berubah untuk mengubahnya Anda boleh juga memasukkan file jason yang anda akan memahami dan menggunakan pada awal awal Tapi pada awal awal, anda boleh menghubungi perlukan untuk mendengar bahagian Dan menerima jawapan yang anda perlukan Dan jam MountBank yang anda boleh menerima dengan server MountBank di Ruby Jadi anda boleh menggunakan perlukan untuk mendengar bahagian Jadi, bagaimanapun, apa yang anda boleh lakukan Anda boleh menerima Kata anda berinteraktif dengan perlukan untuk masyarakat Dan anda ingin membuatnya pada masa yang diperlukan Anda ingin menggunakan perlukan untuk masyarakat yang anda akan membuat pada masyarakat ini Untuk menggunakan perlukan untuk masyarakat ini Dan perlukan untuk masyarakat ini Mungkin sebuah file XML atau file jason Yang adalah apa yang anda menunggu dari perlukan actual Jadi anda boleh menghubungi perlukan untuk masyarakat ini Dan menggunakan perlukan untuk MountBank dan beritahu bagaimanapun Untuk menerima bahagian yang anda boleh menerima Jadi, mari kita lihat bagaimana saya berharap menerima bahagian ini Jadi, bagaimanapun, apa yang anda boleh menerima Ini adalah pilihan kawasan, anda boleh menggunakan MB Jadi MB dash-S memastikan penerimaan Jadi, memastikan penerimaan yang anda dapat Jadi, ia mendengar support 2525 Dengan perlukan, anda boleh menerima bahagian ini Jadi, 2525 anda dapat melihat banyak Jadi, bagaimana ia berjaya Ini adalah diagram yang sangat baik untuk menunjukkan bagaimana ia berjaya Jadi, ia memastikan penerimaan Anda beritahu, saya mahu penerimaan ini mendengar bahagian ini Dan berikan bahagian ini Dan berikan bahagian ini Jadi, saya berharap menerima bahagian ini Saya berharap ini juga menerima bahagian ini Jadi, apa yang saya telah lakukan adalah Saya sebenarnya cuba menerima bahagian ini Dan saya sebenarnya mengatasi, saya mahu awak menerima bahagian ini Lokal 4545 Tempat 4545 Tidak memberi saya jawaban sekarang Jadi, apa yang saya boleh lakukan di depan Saya menerima bahagian ini Anda menjelaskan ini atau perlu menjemput Ini bermaksud maju Untuk Thenouldisten di depan 4545 Untuk jawaban saya Jadi, yang tersebut ini beri saya jawaban Ia berikan 200, jadi saya boleh sekarang pergi ke perjalanan yang berlainan dan berkata, saya mahu beritahu anda sekarang Jadi perjalanan yang berlainan adalah, saya mahu beritahu anda, tolong dengar jawapan daripada Port 4545 Dan kembali dengan jason payload. Ini adalah jawapan yang saya sedang mencari Saya mahu anda sekarang melakukan ini. Saya akan cuba mencari test ini Jadi apa yang telah saya lakukan adalah, sekarang saya akan mencari jawapan yang berlainan Jadi ingatkan anda mencari jawapan anda dan anda mahu... Biasanya, setelah mencari perjalanan URL, anda dapat pada konfigurasi anda, sebagai sebuah konfigurasi perjalanan Kata, saya mahu anda mencari perjalanan local ke Port 4545 atau apa-apa pun yang anda mahu mendengar Dan kembali dengan jason payload, tolong dengar jawapan URL Dan kembali dengan jawapan dan kembali dengan jawapan kan Jadi anda dapat melakukan itu Sudah tentu anda juga dapat melakukan ini dengan VCR dan banyak yang lain Tetapi jika anda memang mahu sesuatu yang anda dapat mempunyai banyak kontrol Dan mungkin ada beberapa kota yang anda tidak dapat mengawal Untuk contoh anda dalam... Kota anda tidak boleh mengawal contoh anda, anda tidak boleh mengawal moks Anda dapat sebenarnya membuatnya mencari perjalanan dan membuatnya berikan jawapan Jadi sebuah sebaik contoh yang saya mahu... Jadi anda mendengar sebuah kota yang anda mahu... Saya akan beritahu anda, jika anda melihat kota ini, mencari perjalanan dan berikan jawapan hanya di kota ini Jadi sebuah kota ini sekarang tidak mencari jawapan Jika anda mencari perjalanan, berikan jawapan baru yang saya perlukan Sebaik-baik saja Saya mencari perjalanan ini... Saya mencari perjalanan ini pada malam Saya fikir ia ada sekitar 200 perjalanan sekarang Jadi... Boleh saya periksa? Bila kita boleh menunggu sebuah kota sekarang? Janganlah Pilih dulu Adakah ia selesai? Sebenarnya ia selesai Ada beberapa perkara lain yang anda boleh lakukan Anda boleh menyebabkan keadaan javascript Javascript seperti keadaan Dan anda akan membuat keadaan javascript Dan anda akan melihat keadaan javascript untuk tiba-tiba keadaan Di kota anda, bagaimana contoh Kota anda berada di sana Anda mengambil kota anda dan melakukan beberapa manipulasi Seperti jika anda melakukan keadaan Md5 atau menerima keadaan javascript sebagai keadaan keadaan keadaan Anda boleh mengambil keadaan javascript menjadi keadaan Dan anda akan tahu apa yang harus dibuat Yang sangat menyerah Jadi, itu saja yang saya ada 5 perkara yang saya sedang mempunyai Faults.in.hash.new ASM, RubiState Machine Sibetak kisah untuk menulis pakaian Sangat bagus, T-Max, Vim, Vim Max dan Vim Aspect Kambu Sangat berbentuk dan berbentuk Jadi, ini semua perkara yang saya sedang sedang sedang sedang Ada pertanyaan? Ya Saya akan cuba untuk saya balik Saya hanya ingin menerima, saya telah menerima beberapa perkara Saya hanya ingin menerima jika anda menggunakan hash.new dan mengambil sesuatu keadaan Md array Ini bukan array Md array untuk setiap kata Ini adalah kata yang sama Jadi jika anda berfikir mengenai sesuatu Mungkin hash, respons, mengambil keadaan keadaan Dan anda membuat keadaan keadaan keadaan keadaan keadaan keadaan Anda akan mengambil keadaan keadaan keadaan keadaan Saya akan menerima pakaian yang akan berlalu di perjalanan Tapi saya telah menerima beberapa perkara So, sesuatu kebanyakan anda akan saya menggunakan kata barang Sudah tentu Jangan menyaik krime Re physically Kami akan menghubungkannya juga. Okey, jika anda dapat menghubungkannya, anda boleh menghubungkannya nanti. Sekarang, kami akan menghubungkannya untuk... Jadi, seperti yang berlaku, kami akan menghubungkannya.