Fakultas Ilmu Komputer UI

Commit 0b8894e9 authored by Dwi Nanda Susanto's avatar Dwi Nanda Susanto
Browse files

update readme md

parent f56170c5
Pipeline #25739 failed with stage
in 5 minutes and 7 seconds
......@@ -33,4 +33,53 @@ Dalam exercise kali ini saya membuat mutant yang bertujuan untuk membuat functio
Dalam exercise kali ini mempelajari tentang ```Spiking```. ```Spiking``` adalah sebuah aktivitas explore program ketika membuat sebuah fitur tanpa membuat TDD functional dan unittest. Pada exercise kali ini spiking diterapkan ketika membuat fitur *auth* tanpa tanpa menggunakan passworrd.
Sedangkan De-```Spiking``` adalah menghapus keseluruhan implementasi spiking lalu memulai membuat implementasi fitur barusan, dari awal lagi hanya saja lengkap dengan TDD nya.
\ No newline at end of file
Sedangkan De-```Spiking``` adalah menghapus keseluruhan implementasi spiking lalu memulai membuat implementasi fitur barusan, dari awal lagi hanya saja lengkap dengan TDD nya.
# Exercise 8
Mocking adalah sebuah cara untuk melakukan testing dengan membuat fungsi `fake` yang menerima input dan mengeluarkan hasil yang sama seperti fungsi yang ingin di test dengan tujuan untuk menghindari pemanggilan fungsi yang berlebihan dan untuk menghindari fungsi lain terpengaruh oleh fungsi yang tadi dipanggil
Pada exercise ini dipelajari 2 cara melakukan mocking yaitu `manual mocking` dan mocking dengan `library`.
Pada manual mocking dilakukan dengan mengganti fungsi `send_mail` dengan versi fake nya yang bernama `fake_send_mail` :
```
def test_sends_mail_to_address_from_post(self):
self.send_mail_called = False
def fake_send_mail(subject, body, from_email, to_list):
self.send_mail_called = True
self.subject = subject
self.body = body
self.from_email = from_email
self.to_list = to_list
accounts.views.send_mail = fake_send_mail
self.client.post('/accounts/send_login_email', data={
'email': 'edith@example.com'
})
self.assertTrue(self.send_mail_called)
self.assertEqual(self.subject, 'Your login link for Superlists')
self.assertEqual(self.from_email, 'noreply@superlists')
self.assertEqual(self.to_list, ['edith@example.com'])
```
Sedangkan mocking dengan `library`, dilakukan dengan menggunakan library dari Python yang sudah tersedia bernama `Mock`. Library tersebut menyediakan decorator bernama `patch` yang digunakan pada fungsi yang membutuhkan mock
```
@patch('accounts.views.send_mail')
def test_sends_mail_to_address_from_post(self, mock_send_mail):
self.client.post('/accounts/send_login_email', data={
'email': 'edith@example.com'
})
self.assertEqual(mock_send_mail.called, True)
(subject, body, from_email, to_list), kwargs = mock_send_mail.call_args
self.assertEqual(subject, 'Your login link for Superlists')
self.assertEqual(from_email, 'noreply@superlists')
self.assertEqual(to_list, ['edith@example.com'])
```
Dengan memberikan anotasi `@Patch` fungsi yang berada dibawahnya akan secara otomatis dibuatkan versi Mock-nya oleh library tersebut.
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment