Saya perlu memeriksa apakah perilaku metode perintah saya melakukan checkout dengan benar. Untuk ini saya mencoba mengejek:
- Sebuah gudang;
- Dua cabang;
Kedua cabang tersebut adalah yang satu menjadi cabang saat ini dan yang lainnya menjadi cabang masa depan.
Repositori akan memiliki dua cabang yang disebutkan sebelumnya dan saya akan melakukan checkout dari satu cabang ke cabang lainnya.
Untuk ini saya menggunakan NSpec sebagai unit test suite saya, moq sebagai kerangka tiruan saya, libgit2sharp sebagai kontrol versi dan fluentAssertions sesuai harapan.
Namun tugas yang (seharusnya) sederhana ini semakin mendekati tugas yang mustahil bagi saya. Saya pikir itu karena kurangnya kedalaman saya dalam menggunakan alat-alat tersebut (libgit2sharp dan moq). Saya banyak mencari di web sebelum datang ke sini. Jadi, menurut saya ini bukan pertanyaan duplikat.
Salah satu masalah yang saya hadapi adalah ketika saya mengejek (dengan sukses) sebuah repositori, tetapi ketika saya mencoba menambahkan cabang (baik dengan memanggil repo.Branches.Add
atau repo.CreateBranch
) saya mendapatkan kesalahan bahwa objek yang diejek tidak memiliki metode tersebut. Dan itu benar, karena ini adalah metode ekstensi dan saya menemukan bahwa moq memiliki masalah dengan metode statis.
Nah, ini dia:
Bagaimana cara meniru repositori yang memiliki 2 cabang, salah satunya adalah cabang saat ini, agar dapat melakukan checkout dan beralih dari cabang saat ini ke cabang lainnya menggunakan libgit2sharp dan moq?
Kode saat ini terlihat seperti ini:
it["Executa mudança de branches"] = () =>
{
var repository = new Mock<IRepository>();
repository.Setup(rp => rp.Branches.Add("confidence", "be3563ae3f795b2b4353bcce3a527ad0a4f7f644", false));
repository.Setup(rp => rp.Branches.Add("goodDesign", "be3563ae3f795b2b4353bcce3a527ad0a4f7f645", false));
repository.Object.CreateBranch("confidence", "be3563ae3f795b2b4353bcce3a527ad0a4f7f644");
repository.Object.CreateBranch("goodDesign", "be3563ae3f795b2b4353bcce3a527ad0a4f7f645");
repository.Object.Checkout(rep.Object.Branches["goodDesign"]);
repository.Object.Head.Name.Should().Be("goodDesign");
//my class in test
var versionControl = new VersionControl(repository);
versionControl.ChangeToBranch("confidence");
versionControl.CurrentBranch.Should().Be("confidence");
};
Dan, jika tidak memungkinkan, lakukan dengan alat tersebut. Bagaimana saya bisa melakukannya?
OH, saya lupa mengatakan bahwa saya bukan penutur asli bahasa Inggris, jadi saya sangat menyesal atas kesalahan yang saya lakukan di sini.