在尝试构建遵循FIRST方法的单元测试时,我在尝试检查对Core Audio的调用时遇到了问题。
考虑到我构建的以下代码:
func setProperty(id: AudioUnitPropertyID, scope: AudioUnitScope, element: AudioUnitElement, data: UnsafePointer<Void>, size: UInt32) {
checkError(AudioUnitSetProperty(base.audioUnit, id, scope, element, data, size), "Failed to set property: \(propName(id))")
}
您可以看到它是对AudioToolbox框架的一个非常简单的调用。我正在努力学习如何测试这段代码。因为函数AudioUnitSetProperty
是框架中的全局函数,所以我无法覆盖它,并且没有我可以模拟的类。
其他可能有用或可能没用的信息是我的自定义函数存在于协议中。因此,如果我有一个符合此协议的结构并使用此setProperty()
func,您将拥有以下内容:
struct AudioFileUnit: BaseUnitProtocol {
func play() {
var timeStamp = AudioTimeStamp()
timeStamp.mFlags = AudioTimeStampFlags.SampleTimeValid
timeStamp.mSampleTime = -1
// here is the call
setProperty(kAudioUnitProperty_ScheduleStartTimeStamp, scope: kAudioUnitScope_Global, element: 0, data: &timeStamp, size: UInt32(sizeof(AudioTimeStamp)))
}
}
如果我错了,请纠正我,但在测试中play()
我只想知道正确的论据传递给setProperty
。然后在我对协议的测试中,我想确保Core Audio在他们的框架中获得正确的调用。