我有一些代码希望能够写入文件,我想测试一些错误方案是否正确处理。其中之一是目标文件被锁定。
我认为这样的事情会引发错误(在Swift中,但这不重要):
var someByte: UInt8 = 0b101010
let os = OutputStream(toFileAtPath: "myfile", append: false)!
os.open()
os.write(&someByte, maxLength: 1)
// Inlining methodThatWrites(toFileAt: "myfile")
let os2 = OutputStream(toFileAtPath: "myfile", append: false)!
os2.open()
os2.write(&someByte, maxLength: 1)
os2.close()
// end of inlining
os.write(&someByte, maxLength: 1)
os.close()
但是,没有错误发生 - 同一个进程可能会同时写入同一个文件。 (从操作系统的角度来看,这完全有道理,但从应用程序的角度来看,这确实很奇怪。)
我会尝试start an external process并从那里打开要写入的文件,但是在为iOS构建时不能这样做(Process
,NSTask
不可用)。
是否可以在为iOS构建的单元测试中模拟锁定的文件?
我看到了this question,但答案在这里不适用(没有Windows,测试是自动化的)。