ฉันต้องตรวจสอบว่าพฤติกรรมของวิธีคำสั่งของฉันกำลังชำระเงินอย่างถูกต้องหรือไม่ เพื่อสิ่งนี้ ฉันกำลังพยายามเยาะเย้ย:
- พื้นที่เก็บข้อมูล;
- สองสาขา;
ทั้งสองสาขาคือสาขาหนึ่งเป็นสาขาปัจจุบันและอีกสาขาหนึ่งเป็นสาขาในอนาคต
พื้นที่เก็บข้อมูลจะมีสองสาขาที่กล่าวถึงก่อนหน้านี้ และฉันจะดำเนินการชำระเงินจากสาขาหนึ่งไปอีกสาขาหนึ่ง
สำหรับสิ่งนี้ ฉันใช้ NSpec เป็นชุดทดสอบหน่วย, moq เป็นเฟรมเวิร์กจำลอง, libgit2sharp เป็นตัวควบคุมเวอร์ชัน และยืนยันได้อย่างคล่องแคล่วตามความคาดหวัง
แต่งานง่ายๆ นี้ (ควรจะเป็น) กำลังเข้าใกล้สิ่งที่เป็นไปไม่ได้สำหรับฉันมากขึ้น ฉันคิดว่านั่นเป็นเพราะว่าฉันขาดความลึกในการใช้เครื่องมือเหล่านั้น (libgit2sharp และ moq) ฉันค้นหาในเว็บหลายครั้งก่อนที่จะมาที่นี่ ดังนั้น ฉันคิดว่านี่ไม่ใช่คำถามที่ซ้ำกัน
ปัญหาอย่างหนึ่งที่ฉันกำลังเผชิญคือเมื่อฉันจำลองพื้นที่เก็บข้อมูล (ด้วยความสำเร็จ) แต่เมื่อฉันพยายามเพิ่มสาขา (ไม่ว่าจะโดยการโทร repo.Branches.Add
หรือ repo.CreateBranch
) ฉันได้รับข้อผิดพลาดว่าวัตถุที่จำลองไม่มีวิธีการเหล่านั้น และถูกต้อง เนื่องจากเป็นวิธีการขยาย และฉันพบว่า moq มีปัญหากับวิธีคงที่
เอาล่ะ:
จะจำลองพื้นที่เก็บข้อมูลที่มี 2 สาขาได้อย่างไร โดยสาขาหนึ่งเป็นสาขาปัจจุบัน เพื่อให้สามารถดำเนินการชำระเงินและเปลี่ยนจากสาขาปัจจุบันไปเป็นสาขาอื่นโดยใช้ libgit2sharp และ moq ได้อย่างไร
ขณะนี้โค้ดดูเหมือนว่าเป็นดังนี้:
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");
};
และถ้าหากไม่สามารถทำอะไรกับเครื่องมือเหล่านั้นได้ ฉันจะทำอย่างไร?
โอ้ ฉันลืมบอกว่าฉันไม่ใช่เจ้าของภาษาอังกฤษ ดังนั้นฉันขอโทษจริงๆ สำหรับข้อผิดพลาดใดๆ ที่ฉันทำที่นี่อย่างแน่นอน