2012-02-25 2 views
1

비동기 readFile (경로, 콜백) 함수가 있습니다.특수 테스트 케이스에 테스트 가능한 코드를 작성하는 방법

처음으로 파일을 읽으면 파일 시스템에서 파일을 읽습니다. 그것은 내용을 메모리에 저장합니다.

나중에 동일한 파일을 읽으면 파일 시스템에 다시 도달하는 대신 메모리에서 내용을 반환합니다.

내가 겪고있는 문제는 파일 시스템이나 메모리에서 콘텐츠가 반환되는지 여부를 알기위한 메서드 호출이 없기 때문에이 메커니즘을 테스트하는 방법입니다.

어떻게 캐싱 기능을 테스트 할 수 있도록 readFile()을 구현할 수 있습니까?

답변

0

왜 이런 생각을하지 않았습니까? 콜백 (err, content, fromMemory)에 파일 시스템인지 메모리인지를 나타내는 플래그를 전달할 수 있습니다.

+0

그러나이 테스트를 작성하는 데있어 귀하의 모든 목적은 루틴에 의한 올바른 동작을 확인하고자한다는 것입니다. 이제는 그 검증을 루틴 자체에 위임하고 있습니다! –

2

원시 파일 열기 도구를 조롱했습니다.

+0

나는 개인적인 이유로 외부 서비스를 조롱하는 것을 좋아하지 않는다고 말 했어야했다. 하지만 모범 사례를 추천 한 경우 +1합니다. – ajsie

+0

나는 사람들을 죽이기 위해 칼을 사용하는 것에 반대한다. 그러나 나는 그들을 야채를 자르는 데 사용하고 있습니다. : p 내 말은 올바른 일에 올바른 도구를 사용하는 것이 잘못 될 수 없다는 것입니다. 그리고 이것은 모의를 사용하는 완벽한 경우입니다. – pkoch

+0

동의, 가짜는 거의 항상 문제에 대한 잘못된 대답이지만,이 경우 절대적으로 정확합니다. –

1

전화를 사용하여 파일을 읽지 않은 다음 파일을 수정 한 다음 다시 시도해보십시오. 그것은 첫 번째와 동일하고 두 번째와 다른 경우 작동합니다. 또는 캐시하는 변수를 노출하고 수정할 수 있으며이를 검사 할 수 있습니다.

+0

아마도 ... "** 파일 ** 수정 ..."을 의미했습니다. 어떤 것을 조롱하지 않고 루틴을 테스트 할 수있는 좋은 방법입니다. +1 –

+0

@RossPatterson correct, whoops! – balupton

0

코드 수준에서 확실히 파일에 가서 캐시에서 다른 사람이 읽지 않은 경우 캐시에 내용이 있는지 여부를 확인해야합니다. 이 검사는 한 경우에는 true를 반환하고 다른 경우에는 false를 반환하도록 조롱 될 수 있습니다.이 경우 검사를 작성할 수 있습니다. 희망을 여기에서 만들고 있습니다.

관련 문제