Herhangi bir C++ kodu derlemeden QML testleri benim için çalışıyor. Benim durumda
, bir Cı başka bir amacı,
left_motor adı verilen bir özelliğe sahip
kontrolör nesne ++ sahiptir ve bu özellik
hızı sahiptir.
hızının hızının okunabilir olduğunu, ancak yazılabilir olmadığını unutmayın. Herhangi bir güncelleme, yuvalardan gerçekleşir. QML'de buna benzer: controller.left_motor.onGuiSpeedChanged (hız)
Bunu, öğe bileşenleri, özellikler ve bazı javascript kullanarak QML ile alay edebildim.
Item { // mock of controller
id: controller
property alias left_motor: left_motor
Item {
id: left_motor
property int speed: 0
function onGuiSpeedChanged(arg) {
speed = arg
}
}
}
property alias controller: controller
Şimdi controller.left_motor.onGuiSpeedChanged (hız) gibi daha önce çözmek, ancak sahte fonksiyonuna içine bağlanmak için çağırır. Aramanın gerçekleştiğini bilmek için hız özelliğini bile okuyabilirim. yerine yazılabilir özelliklerinin yuvalarını kullanmak önemli olduğunu
function test_set_speed() {
console.log("controller.left_motor.speed: " + controller.left_motor.speed)
var got = page1.set_left_speed(250)
compare(got, 250, "set_left_speed() return incorrect")
console.log("controller.left_motor.speed: " + controller.left_motor.speed)
}
Not:
İşte benim test fonksiyonu (ı test olduğum kod page1 parçasıdır) 'dir. Bir yuvaya yapılan çağrı, bir işlev çağrısı gibi görünür ve bu şekilde alay edilebilir. Mülkiyet yazımı yapmak için bir yol bulamadım.
Yazılabilir özellikleri denemeye başladım çünkü bu, C++ ve QML bağlayıcı belgelerindeki ilk şeydi. QML ve C++'yi beklendiği gibi bağlar, ancak test için alay edilemez.
Testlerinizi nasıl yürütüyorsunuz? QML'de birim testleri yazıyor ve testleri çalıştırmak için _qmltestrunner_'ı kullanmaya çalışıyor musunuz? Q ++ 'yu C++' da çalıştırmaya çalışıyor musunuz ve testleri _googlemock_ 'dan mı çalıştırıyorsunuz? Yoksa başka bir şey mi yapıyorsun? – dobey
Hiç bu işe yaramadı mı? Aynı problemim var. –
Çalıştığım bir şeyi buldum ve aşağıda bir cevap olarak ekledim. Ne yazık ki, yardım için orjinal ağlama oyalandı; Bu yüzden birisinin bir başka bakış açacağını ve düzenlenmiş olanı hayata döndüreceğini umuyorum. –