Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk membuat ujian unit untuk storan data dalam memori?

Bagaimana untuk membuat ujian unit untuk storan data dalam memori?

WBOY
WBOYke hadapan
2024-02-09 10:12:19687semak imbas

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
}
type datastore struct {
    mu     sync.mutex
    bucket map[string]*element
}
func newdb() *datastore {
    return &datastore {
        bucket: make(map[string]*element),
    }
}

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)
    }
}

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())
    }

}

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!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam