Kā izmantot testa failu, lai piekļūtu mod.rs Rust Child Module

Rust

Moduļu piekļuves izpēte rūsas projektos

Strādājot ar Rust, ir svarīgi saprast, kā strukturēt un piekļūt moduļiem, lai uzturētu tīru un modulāru kodu. Ja jūs tikko sākat darbu ar Rust vai strādājat pie esoša projekta, jūs varat saskarties ar izaicinājumu piekļūt moduļiem, kas atrodas dažādās jūsu projekta direktorijas daļās. Tas var būt sarežģīti, it īpaši, mēģinot atsaukties uz pakārtoto moduli no testa faila ārpus galvenā pirmkoda. 🔍

Rust projekta kontekstā iespēja piekļūt mod.rs failam no dažādām projekta daļām ir svarīga testēšanai un modularitātei. Fails "mod.rs" darbojas kā moduļa ieejas punkts, un to bieži izmanto, lai sakārtotu apakšmapes saturu. Bieži sastopama problēma rodas, mēģinot piekļūt šim failam no mapes “tests/”, kas atrodas ārpus standarta src/ direktorija. 🛠️

Pieņemsim, ka strādājat ar projektu, kura direktorijā src/ ir mape Controllers/, un vēlaties pārbaudīt dažas tās funkcionalitātes. Zinot, kā pareizi importēt mod.rs failu un piekļūt tam no faila tests/test.rs, testēšanas process būs vienmērīgāks. Tomēr Rust moduļu sistēmai ir nepieciešama laba izpratne par relatīvajiem ceļiem un moduļa redzamību, lai to panāktu nemanāmi.

Nākamajā sadaļā mēs apskatīsim darbības, kas jāveic, lai atrisinātu šo problēmu, pareizi atsaucoties uz mod.rs, kas atrodas mapē “controllers” no faila “test.rs”. Beigās jūs būsit gatavs tikt galā ar šo izaicinājumu un ieviest efektīvus testus saviem Rust projektiem. Iedziļināsimies dažos praktiskos piemēros, lai ilustrētu procesu!

Pavēli Lietošanas piemērs
mod Deklarē moduli Rust projekta ietvaros. To var izmantot, lai iekļautu un atsauktos uz citiem failiem (piem., mod kontrolieriem;) vai konkrētām koda daļām, piemēram, apakšmoduļiem.
#[cfg(test)] Atribūti, kas norāda, kura koda daļa ir jāapkopo, tikai veicot testus. Tas palīdz atdalīt testa loģiku no galvenās kodu bāzes, nodrošinot, ka testa kods neietekmē ražošanas kodu.
use Izmanto, lai iekļautu konkrētus moduļus, funkcijas vai veidus. Piemēram, izmantojiet kontrolierus::sms; ienes `sms` moduli no direktorija `controllers` testa failā.
pub Šis atslēgvārds padara moduli, funkciju vai mainīgo pieejamu ārpus tā pašreizējās darbības jomas. To izmanto, lai nodrošinātu, ka jūsu koda daļas, piemēram, mod.rs funkcijas, ir redzamas citiem moduļiem, tostarp testiem.
#[test] Atzīmē funkciju kā vienības testu. Rust iebūvētajā testa ietvarā šī anotācija tiek izmantota, lai identificētu funkcijas, kuras palaist kā pārbaudes, piemēram, #[test] fn test_sms().
assert_eq! Izmanto, lai pārbaudītu, vai divām izteiksmēm ir viena un tā pati vērtība. Ja vērtības nav vienādas, pārbaude neizdodas. Piemēram, assert_eq!(result, Ok("Ziņojums veiksmīgi nosūtīts!")); pārbauda, ​​vai rezultāts atbilst gaidītajam.
Err Apzīmē Rezultāta tipa variantu Rust, norādot uz kļūdu vai kļūmi. To izmanto testa gadījumā, lai modelētu kļūmes stāvokli, kā redzams sadaļā Err ("Nederīga ievade").
Ok Apzīmē Rezultāta veida veiksmes variantu. To izmanto testos, lai modelētu veiksmīgu rezultātu, piemēram, Labi ("Ziņojums veiksmīgi nosūtīts!").
mod.rs Faila nosaukums, ko Rust izmanto, lai deklarētu direktorijas moduli. Tas palīdz sakārtot apakšmoduļus vienā mapē, padarot tos pieejamus, atsaucoties uz vecākmapi, piemēram, mod kontrolieriem; piekļūst `kontrolleri/mod.rs`.

Izpratne par skriptu: piekļuve bērnu moduļiem rūsā

Iepriekšējā piemērā mēs izpētījām, kā piekļūt failu iekšā mapē no testa faila, kas atrodas mapē direktoriju. Iedziļināsimies, kā darbojas skripti un kāpēc katra daļa ir svarīga. Pirmais solis ir moduļu deklarēšana jūsu Rust projektā, īpaši izmantojot mod atslēgvārds, lai atsauktos uz kontrolieri moduli no galvenās kodu bāzes. Tas padara saturu kontrolieri mape, piemēram , kas ir pieejams pārējam jūsu koda daļai, tostarp testiem. Bez šīs deklarācijas jūsu testa faili nevarētu atrast vai izmantot moduli. Tas ir tāpat kā skaidras adreses norādīšana vietai — bez tās sistēma nevar zināt, kurp doties. 🛠️

Vēl viens svarīgs šo skriptu aspekts ir atribūts. Šis atribūts liek Rust apkopot un iekļaut noteiktas koda daļas tikai testēšanas laikā. Mūsu gadījumā to izmanto, lai izolētu pārbaudes funkcijas, tāpēc tās neietekmē lietojumprogrammas galveno loģiku. Šī pieeja palīdz uzturēt tīru kodu un nodrošināt, ka testēšanas loģika netraucē ražošanas kodu. Varat to iedomāties kā testa vidi, kas tiek aktivizēta tikai tad, kad esat gatavs pārbaudīt sistēmas veiktspēju vai funkcionalitāti. Tas nodrošina, ka sistēma paliek stabila un to neietekmē testēšanas darbības.

The atslēgvārdam ir izšķiroša nozīme konkrētu moduļu vai funkciju iekļaušanā darbības jomā. Skriptā, ļauj mums piekļūt modulis iekšpusē kontrolieri mapi no testa faila. Tas padara visas publiskās funkcijas iekšā pieejams, piemēram, funkciju, ko mēs pēc tam pārbaudām, lai pārbaudītu, vai tā darbojas, kā paredzēts. Šī pieeja ir izplatīts modelis Rust koda atkārtotai izmantošanai un modularitātei. Iedomājieties, ka atrodaties bibliotēkā un Tas ir kā konkrētas grāmatas iegūšana no plaukta, kas nepieciešama darba pabeigšanai — tas ietaupa laiku un pūles, padarot jums pieejamas tikai attiecīgās koda daļas. 📚

Visbeidzot, anotācija un makro ir būtiski, lai palaistu un apstiprinātu mūsu vienību testus. atzīmē funkciju kā testa gadījumu, ko Rust testa ietvars atpazīst automātiski. Skriptā mēs izmantojām Assert_eq! lai salīdzinātu paredzamo rezultātu ar faktisko rezultātu funkciju. Ja vērtības nesakrīt, pārbaude neizdosies, sniedzot mums tūlītēju atgriezenisko saiti par mūsu koda funkcionalitāti. Tas palīdz mums nodrošināt, ka mūsu moduļi darbojas, kā paredzēts, un ļauj ātri noteikt un novērst problēmas. Tas ir tāpat kā ar drošības tīklu izstrādes laikā — ja kaut kas noiet greizi, tests to uztvers un precīzi pateiks, kur meklēt.

Kā piekļūt mod.rs failam no pārbaudes Rust

Rūsa — aizmugursistēmas izstrāde

mod controllers; // Declare the module from the controllers folder
use controllers::sms; // Use a specific module inside controllers
#[cfg(test)] // Mark the module for testing only
mod tests; // Declare the test module
#[cfg(test)] // Only compile the test code in test configuration
use crate::controllers::sms::send_sms; // Example of using the sms.rs file from controllers
#[test] // Declare a test function
fn test_sms_function() {
    assert_eq!(send_sms("12345", "Test message"), Ok("Message sent successfully!")); // Test the function
}

Risinājums ar relatīviem ceļiem, izmantojot mod.rs moduļa piekļuvei

Rust — aizmugursistēmas izstrāde ar moduļa organizāciju

mod controllers { // Declare the controllers module
    pub mod sms; // Make the sms module accessible
    pub mod mod.rs; // Ensure mod.rs is public and accessible in tests
}
#[cfg(test)] // Only include this part in test builds
mod tests; // Test module declaration
use crate::controllers::sms::send_sms; // Access the sms function from controllers
#[test] // Mark this function as a test
fn test_sms() {
    let result = send_sms("12345", "Test message");
    assert_eq!(result, Ok("Message sent successfully!")); // Validate test results
}

Vienības tests kontrolieriem Moduļa piekļuve no test.rs

Rūsa - kontrolieru moduļa pārbaude

mod controllers; // Declare the module path for controllers
use controllers::sms; // Use the sms module from controllers
#[cfg(test)] // This module is only included during testing
mod test; // Test module declaration
#[test] // The test annotation for unit tests
fn test_send_sms() {
    let result = sms::send_sms("12345", "Hello, World!");
    assert_eq!(result, Ok("Message sent successfully!")); // Check for expected result
}
#[test] // Another test for failure case
fn test_send_sms_failure() {
    let result = sms::send_sms("", "");
    assert_eq!(result, Err("Invalid input")); // Expect failure case
}

Kā piekļūt un strukturēt moduļus rūsā testēšanai

Strādājot ar Rust, izpratne par to, kā moduļi ir strukturēti un kā tiem piekļūt, ir būtiska izstrādes procesa sastāvdaļa. Tas ir īpaši svarīgi, ja vēlaties piekļūt bērna modulim, piemēram, tādā mapē kā , no testa faila, kas atrodas atsevišķā mapē, piemēram . Galvenais, lai veiksmīgi piekļūtu un izmantotu bērnu moduļus, ir Rust moduļu sistēmas izpratne, kas balstās gan uz precīzām moduļu deklarācijām, gan uz relatīvo ceļu izmantošanu. Rust izmanto īpašu hierarhiju, kurā katrā mapē var būt a mod.rs failu, lai definētu moduļa darbības jomu. Kad sapratīsit, kā atsaukties uz šiem ceļiem, varēsit efektīvi pārbaudīt dažādas savas kodu bāzes daļas.

Lai piekļūtu failu savā testa kodā, vispirms ir jāpārliecinās, vai avota kodā modulis ir pareizi deklarēts. Mūsu piemērā paziņojums galvenajā projekta direktorijā palīdz mums norādīt mapi, kurā mod.rs fails atrodas. Pēc tam varat izmantot testa faila iekšpusē lai piekļūtu konkrētiem failiem, piemēram sms.rs un tās funkcijas. Šī modulārā struktūra nodrošina labāku koda organizēšanu un atkārtotu izmantošanu, jo jums ir jāimportē tikai konkrētas funkcijas vai veidi, kas nepieciešami testēšanai.

Ir svarīgi atzīmēt, ka Rust moduļu sistēma ir ļoti stingra attiecībā uz redzamību. Piemēram, visas funkcijas vai veidi, ko vēlaties izmantot ārpus to sākotnējā moduļa, ir jāatzīmē ar atslēgvārdu, lai tie būtu publiski pieejami. Šajā gadījumā, funkcija iekšpusē failam ir jābūt publiskam, lai tam varētu piekļūt testa failā. Tas padara sistēmu gan drošu, gan veiktspējīgu, nodrošinot, ka tikai nepieciešamie komponenti ir pakļauti citām kodu bāzes daļām. Efektīvi organizējot savus moduļus un testus, jūs varat nodrošināt, ka jūsu Rust lietojumprogramma joprojām ir mērogojama un apkopjama. ⚙️

Bieži uzdotie jautājumi par piekļuvi bērnu moduļiem Rūsā

  1. Kā no testa faila piekļūt modulim, kas atrodas apakšdirektorijā?
  2. Jūs varat izmantot atslēgvārds moduļa deklarēšanai, kam seko atslēgvārds, lai no šī moduļa iekļautu konkrētas funkcijas vai veidus. Piemēram, padara sms.rs modulis ir pieejams.
  3. Ko dara nozīmē Rust?
  4. Tas iezīmē kodu, kas jāapkopo un jāpalaiž tikai testēšanas laikā. Tas palīdz nodrošināt, ka testa loģika neietekmē jūsu lietojumprogrammas ražošanas būvējumu.
  5. Kā es varu padarīt funkciju pieejamu citā Rust modulī?
  6. Jums ir jādeklarē funkcija kā , kas padara to publisku un pieejamu ārpus sava moduļa. Piemēram, atļautu izmantot testa failos.
  7. Kāpēc ir izmanto Rust?
  8. kalpo kā galvenais ieejas punkts moduļa mapei. Tas ļauj Rust sakārtot failus apakšmoduļos, nodrošinot skaidru struktūru lielākiem projektiem.
  9. Kā Rust palaist noteiktu pārbaudes funkciju?
  10. Varat atzīmēt funkciju ar lai norādītu, ka tā ir testa funkcija. Lai palaistu testu, vienkārši izpildiet savā terminālī.
  11. Ko dara veikt rūsas testus?
  12. salīdzina divas vērtības testā. Ja vērtības nav vienādas, pārbaude neizdosies. Šo makro parasti izmanto, lai pārbaudītu, vai faktiskā izvade atbilst paredzamajai izvadei vienību testos.
  13. Vai es varu piekļūt moduļiem no mapi galvenajā pirmkodā?
  14. Nē, mape pēc noklusējuma ir izolēta no galvenā koda. Pārbaužu galvenajiem moduļiem varat piekļūt, izmantojot un atslēgvārdus, kā parādīts piemērā.
  15. Kā strukturēt savu kodu lieliem Rust projektiem?
  16. Lieliem projektiem kārtojiet kodu apakšmoduļos ar failus katrā mapē. Izmantojiet publiskās funkcijas, kas atzīmētas ar pārrobežu moduļu piekļuvei.
  17. Kas notiek, ja es aizmirsīšu Rust funkciju padarīt publisku?
  18. Ja funkcija nav deklarēta kā , tas būs privāts savam modulim. Citi moduļi, tostarp testa faili, nevarēs tai piekļūt, ja vien tie nebūs skaidri publiskoti.
  19. Kā Rust var pārbaudīt moduļus ar ārējām atkarībām?
  20. Lai pārbaudītu moduļus ar ārējām atkarībām, izmantojiet imitācijas bibliotēkas vai atkarības injekciju. Tas nodrošina, ka jūsu testi ir izolēti un nepaļaujas uz ārējām sistēmām.

Izpratne par to, kā piekļūt fails iekšpusē Mape no testa faila ir ļoti svarīga, lai efektīvi strukturētu savus Rust projektus. Izmantojot un mod, varat iekļaut konkrētus moduļus darbības jomā, ļaujot veikt efektīvu un izolētu testēšanu. Šī modulārā pieeja ne tikai uzlabo koda lasāmību, bet arī uzlabo atkārtotu izmantošanu visā jūsu projektā. ⚙️

Noslēgumā Rust moduļu organizēšana, izmantojot nodrošina tīru kodu atdalīšanu un vieglu piekļuvi. Ievērojot Rust moduļu deklarēšanas un redzamības principus, izstrādātāji var uzturēt mērogojamu un pārbaudāmu kodu bāzi. Ar labi strukturētiem testiem jūsu Rust projekts ilgtermiņā saglabāsies gan stabils, gan apkopjams. 📦

  1. Lai izprastu Rust moduļu sistēmu, šajā rakstā ir sniegts detalizēts skaidrojums par to, kā strādāt ar Rust moduļiem. Vairāk par Rust moduļu sistēmu varat lasīt oficiālajā vietnē Rūsas dokumentācija .
  2. Vēl viens noderīgs resurss, lai uzzinātu par testēšanu Rust un kā strukturēt savus testus, ir pieejams oficiālajā Rust grāmatā. Uzziniet vairāk šeit: Rūsas pārbaude .