MockDeviceKit for testing without physical glasses hardware
复制安装指令,让 AI 自动完成配置 · 推荐新手
请帮我安装 askskill 上的 "mockdevice-testing" 技能: 1. 下载 https://raw.githubusercontent.com/facebook/meta-wearables-dat-ios/main/plugins/mwdat-ios/skills/mockdevice-testing/SKILL.md 2. 保存为 ~/.claude/skills/mockdevice-testing/SKILL.md 3. 装好后重载技能,告诉我可以用了
Use MockDeviceKit to test DAT SDK integrations without physical Meta glasses.
MockDeviceKit simulates Meta glasses behavior for development and testing. It provides:
MockDeviceKit — Entry point for creating simulated devicesMockRaybanMeta — Simulated Ray-Ban Meta glassesMockCameraKit — Simulated camera with configurable video feed and photo captureAdd MWDATMockDevice to your target via Swift Package Manager (it's included in the meta-wearables-dat-ios package).
import MWDATMockDevice
import MWDATMockDevice
let mockDeviceKit = MockDeviceKit.shared
mockDeviceKit.enable()
let mockDevice = mockDeviceKit.pairRaybanMeta()
// Simulate glasses lifecycle
mockDevice.powerOn()
mockDevice.unfold()
mockDevice.don() // Simulate wearing the glasses
// Later...
mockDevice.doff() // Simulate removing
mockDevice.fold()
mockDevice.powerOff()
MockDeviceKit provides permissions to control permission behavior without the Meta AI app.
By default, requestPermission() returns .granted. Use set(_:_:) to control checkPermissionStatus() and setRequestResult(_:result:) to control requestPermission() outcomes.
let mockDeviceKit = MockDeviceKit.shared
// Simulate denied camera permission status
mockDeviceKit.permissions.set(.camera, .denied)
// Simulate denied request result (user tapping "deny")
mockDeviceKit.permissions.setRequestResult(.camera, result: .denied)
let camera = mockDevice.services.camera
camera.setCameraFeed(fileURL: videoURL)
let camera = mockDevice.services.camera
camera.setCapturedImage(fileURL: imageURL)
Create a reusable test base class:
import XCTest
import MetaWearablesDAT
@MainActor
class MockDeviceKitTestCase: XCTestCase {
private var mockDevice: MockRaybanMeta?
private var cameraKit: MockCameraKit?
override func setUp() async throws {
try await super.setUp()
MockDeviceKit.shared.enable()
mockDevice = MockDeviceKit.shared.pairRaybanMeta()
cameraKit = mockDevice?.services.camera
}
override func tearDown() async throws {
MockDeviceKit.shared.disable()
mockDevice = nil
cameraKit = nil
try await super.tearDown()
}
}
The CameraAccess sample app includes a Debug menu for MockDeviceKit:
| Type | Formats |
|---|---|
| Video | h.265 (HEVC) |
| Image | JPEG, PNG |
Stream, video frames, photo capture, resolution/frame rate configuration
Device session states, pause/resume, availability monitoring
Swift patterns, async/await, naming conventions, key types for DAT SDK iOS development
Common issues, Developer Mode, version compatibility, state machine diagnosis
Display capability setup, display-capable device selection, UI DSL, icons, buttons, images, and video playback
SDK setup, Swift Package Manager integration, Info.plist configuration, and first connection to Meta glasses