如何因为为iOS构建的单元测试中的锁定而引发I / O错误?

时间:2017-03-24 16:25:27

标签: ios swift unit-testing file-io file-locking

我有一些代码希望能够写入文件,我想测试一些错误方案是否正确处理。其中之一是目标文件被锁定。

我认为这样的事情会引发错误(在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构建时不能这样做(ProcessNSTask不可用)。

是否可以在为iOS构建的单元测试中模拟锁定的文件?

我看到了this question,但答案在这里不适用(没有Windows,测试是自动化的)。

0 个答案:

没有答案