يمكن TransactionScope التراجع استخدامها مع السيلينيوم أو Watin؟

StackOverflow https://stackoverflow.com/questions/1004292

سؤال

وأنا أحاول القيام ببعض التجارب على شبكة الإنترنت الآلي التطبيق ASP.NET بلدي. وكنت آمل أن استخدام السمة AutoRollback من ملحقات Xunit.net إلى التراجع عن أي تغييرات قاعدة البيانات التي تم إجراؤها أثناء الاختبار. يستخدم AutoRollback TransactionScope لبدء معاملة قبل الاختبار ولفة مرة أخرى بعد ذلك.

وعندما كنت في محاولة لضرب تطبيق الويب الخاص بي أثناء إجراء معاملة، فإنه دائما انقضاء المهلة. يبدو مثل هذا يجب أن تعمل، أي أفكار؟ هنا هو اختبار لي:

[Fact]
[AutoRollback]
public void Entity_should_be_in_list()
{
    Entity e = new Entity
    {
        Name = "Test",
    };
    dataContext.Entities.InsertOnSubmit(e);
    dataContext.SubmitChanges();

    selenium.Open("http://localhost/MyApp");
    Assert.True(selenium.IsTextPresent("Test"));
}
هل كانت مفيدة؟

المحلول

وتطبيق ASP.NET الخاص بك يحتوي على سياق قاعدة بيانات منفصلة وليس لديها أي فكرة أن كنت تريد أن انضمام المعاملة التي كتبها Xunit.net. على ما يبدو، بتأمين قاعدة بيانات بعض الموارد عندما تبدأ المعاملات؛ تطبيق ويب ينتظر بصبر لبعض الوقت، وفي النهاية يستسلم.

وأعتقد أن أفضل رهان هو أن تبدأ من قاعدة بيانات فارغة واستخدام البرنامج النصي SQL لإنشاء مخطط ونشر جداول البحث (قاعدة البيانات الخاصة بك هو <وأ href = "https://blog.codinghorror.com/get-your-database- تحت نسخة لمراقبة / "يختلط =" نوفولو noreferrer "> تحت السيطرة مصدر ، أليس كذلك؟). وثمة نهج آخر هو قاعدة بيانات النسخ الاحتياطي قبل تشغيل الاختبارات ومن ثم استعادته بمجرد الانتهاء.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top