나는 사용하는 기능이 있습니다
func write(to url: URL, atomically useAuxiliaryFile: Bool, encoding enc: String.Encoding) throws
그런 :
func writeString(string: String, withDestinationFileName dest: String, withSubDirectory: String = ""){
_ = createDirectory(toDirectory: directory, withSubDirectoryPath: withSubDirectory)
if let fullDestPath = buildFullURL(forFileName: dest, withSubDirectoryPath: bundleName, inDirectory: directory)
do {
try string.write(to: fullDestPath!, atomically: true, encoding: .utf8)
} catch let error {
print ("error\(error)")
}
}}
일반적으로 파일 함수를 테스트하기 위해 모킹 및 스터 빙을 사용합니다. 예를 들어 방금 Filemanager.default에 대한 모의 파일을 작성했습니다.
그러나 여기에 NNString ( Documentation ) 에 인스턴스 메서드가 있습니다. 그러면 어떻게해야합니까?
옵션 :
가장 좋은 방법은 프로토콜을 사용하는 것입니다.
protocol WriteableString {
func write(to url: URL, atomically: Bool, encoding: String.Encoding) throws
}
extension String: WriteableString {}
class MockWriteableString {
var url: URL?
func write(to url: URL, atomically: Bool, encoding: String.Encoding) throws {
self.url = url
//...
}
}
기능을 다음과 같이 변경하십시오. func writeString(string: WriteableString, withDestinationFileName dest: String, withSubDirectory: String = "")
이 접근 방식을 사용하면 함수를 테스트하고 예를 들어 함수에 url
전달 된 write(to:atomically:encoding)
것이 좋은지 확인합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다