Saya memiliki fungsi yang membuat pengguna, menyimpannya di database dan berlangganan ke daftar Mailchimp. Saya memiliki unit test yang menguji fungsi ini.

Sekarang saya ingin menguji fungsi ini, tetapi saya tidak ingin pengguna 'diolok-olok' ditambahkan ke milis.

Apakah ada cara untuk mengecualikan sebagian eksekusi kode ketika suatu fungsi dijalankan dalam mode pengujian unit?

Jadi misalnya saya memiliki fungsi ini (disederhanakan)

public async Task<CreateUserResponse> Create(CreateUserRequest createRequest){
    
    //Save user to database
    var encryptedPassword = encryptor.EncryptPassword(createRequest.Password, salt);
    var user = new UserDomain(){
          EmailAddress = createRequest.EmailAddress,
          Password = encryptedPassword,
          Salt = salt
    }
    _dbContext.Users.Add(user);

    //Subscribe to mailing list
    var mailChimpAdapter = new MailChimpAdapter(_configuration);
    mailChimpAdapter.Subscribe(user);

    return new CreateUserResponse(user);
}

Sekarang saya ingin menjalankan tes unit untuk menguji fungsi itu tetapi tanpa berlangganan. Yang terbaik yang dapat saya pikirkan adalah menggunakan variabel dalam file konfigurasi dan membacanya di dalam fungsi. Tapi mungkin ada cara yang lebih baik?

0
NLAnaconda 8 Juli 2020, 23:08

1 menjawab

Jawaban Terbaik

Salah satu caranya adalah dengan mengekstrak antarmuka dari MailChimpAdapter (misalnya, IMailChimpAdapter) dan kemudian menggunakannya untuk mengejek konstruktor dan metode berlangganan. Anda dapat menggunakan perpustakaan seperti Moq.

Periksa ini untuk intro singkat ini :

2
sammy 8 Juli 2020, 20:27