Bagaimana untuk membuat ujian unit untuk storan data dalam memori?

WBOY
Lepaskan: 2024-02-09 10:12:19
ke hadapan
687 orang telah melayarinya

Bagaimana untuk membuat ujian unit untuk storan data dalam memori?

Editor PHP Xiaoxin akan memperkenalkan anda cara membuat ujian unit untuk storan data dalam memori. Semasa proses pembangunan, ujian unit adalah salah satu cara penting untuk memastikan kualiti kod dan ketepatan fungsi. Untuk penyimpanan data memori, kami boleh menggunakan rangka kerja ujian seperti PHPUnit untuk menulis kes ujian yang sepadan. Pertama, kita perlu mencipta kelas ujian, dan kemudian menulis logik ujian yang berkaitan dalam kaedah ujian. Dalam setiap kaedah ujian, kita boleh menggunakan penegasan untuk mengesahkan bahawa hasil yang dijangkakan sepadan dengan keputusan sebenar. Melalui ujian unit sebegini, kami boleh menemui dan menyelesaikan masalah yang berpotensi dalam masa dan meningkatkan kestabilan dan kebolehpercayaan kod.

Kandungan soalan

Saya ingin mencipta api rehat yang mudah. Saya memutuskan untuk mencipta stor data dalam memori saya sendiri untuk melaksanakan antara muka sedemikian:

type datastore interface {
    add(*element) error
    get(elementid) (*element, error)
    update(*element) error
    delete(elementid) error
    getall() []*element
}
Salin selepas log masuk
type datastore struct {
    mu     sync.mutex
    bucket map[string]*element
}
Salin selepas log masuk
func newdb() *datastore {
    return &datastore {
        bucket: make(map[string]*element),
    }
}
Salin selepas log masuk

Bagaimanakah ia perlu diuji unit?

Beberapa ujian yang saya berjaya buat kelihatan seperti ini:

func testgetalltodotasks(t *testing.t) {
    ts := newdb()
    var elem = &element{fielda : "a" , fieldb : "b"}
    ts.create(elem)

    want := []*element{elem}

    if got := ts.getall(); !reflect.deepequal(got, want) {
        t.errorf("got %v wanted %v", got, want)
    }
}
Salin selepas log masuk

Tetapi apabila saya ingin menguji kaedah lain (seperti kemas kini), saya menyedari bahawa saya perlu menggunakan create dahulu dan kemudian kemas kini, seperti ini:

func TestUpdateTODOTasks(t *testing.T) {
    ts := NewDB()
    var elem = &Element{fieldA : "A" , fieldB : "B"}
    ts.Create(elem)
    if err != nil {
        t.Errorf("=> failed to create: %v", err.Error())
    }
    var updated_elem = &Element{fieldA : "A-updated" , fieldB : "B"}

    err = ts.Update(updated_elem )

    if err != nil {
        t.Errorf("=> failed to update: %v", err.Error())
    }

}
Salin selepas log masuk

Penyelesaian

Anda boleh memulakan pemetaan asas berdasarkan butiran pelaksanaan bahawa storan menggunakan pemetaan di belakang tabir.

Secara umum, anda benar-benar boleh mendapat manfaat daripada ujian seperti yang anda nyatakan. Oleh itu, gunakan API yang ditentukan untuk menyemai storan untuk ujian. Ia mendekatkan ujian anda kepada cara pelanggan menggunakan kod anda. Tidak perlu mengubah suai keadaan asas secara manual. Saya telah melihat banyak ujian yang dilakukan dengan cara ini, tetapi mereka biasanya menjadi tidak dapat diselenggara dan tidak stabil.

Jangan terlalu bergantung pada fakta bahawa ujian unit mesti menyemak fungsi. Malah, mereka lebih kepada menguji bahagian kecil perisian yang lengkap dan serba lengkap, jadi ia tidak perlu menjadi satu ciri sama sekali.

Atas ialah kandungan terperinci Bagaimana untuk membuat ujian unit untuk storan data dalam memori?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!