모든 C++ 코드로 컴파일하지 않고 QML 테스트가 작동됩니다. 내 경우
, 나는 C는 또 다른 목적은
left_motor라는 속성과
컨트롤러 객체 ++, 그리고 그 속성
속도 있습니다.
속도은 읽을 수 있지만 쓰기가 불가능합니다. 모든 업데이트는 슬롯을 통해 발생합니다. QML에서 다음과 같이 보입니다. controller.left_motor.onGuiSpeedChanged (speed)
항목 구성 요소, 속성 및 일부 자바 스크립트를 사용하여 QML로 조롱 할 수있었습니다.
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
지금 controller.left_motor.onGuiSpeedChanged (속도) 전에 같이 해결하지만, 모의 함수에 연결 호출합니다. 나는 전화가 일어났다는 것을 알기 위해 speed 속성을 다시 읽을 수있다. 대신 쓰기 가능한 속성의 슬롯을 사용하는 것이 중요하다는
가
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)
}
참고 :
여기 내 테스트 기능 (I 테스트 해요 코드가 PAGE1의 일부)입니다. 슬롯에 대한 호출은 함수 호출과 비슷하게 조롱 될 수 있습니다. 나는 재산 쓰기를 조롱하는 방법을 이해할 수 없었다.
필자는 writable 속성을 사용하기 시작했는데, 이것이 C++ 및 QML 바인딩의 문서에서 처음 이었기 때문입니다. 예상대로 QML과 C++를 연결하지만 테스트를 위해 조롱받을 수는 없습니다.
테스트를 어떻게 실행합니까? QML로 단위 테스트를 작성하고 테스트를 실행하기 위해 _qmltestrunner_를 사용하려고합니까? C++에서 QML을 실행하고 _googlemock_에서 테스트를 실행하려고합니까? 아니면 뭔가하고 있는거야? – dobey
혹시이 문제가 해결 되었습니까? 나는 같은 문제를 가지고있다. –
나는 일한 것을 알아 냈고 아래 답변으로 추가했습니다. 불행히도, 저의 원래 부르짖 음은 도움을 청했습니다. 그래서 누군가가 다른 모습을보고 편집 된 사진을 다시 볼 수 있기를 바랍니다. –