2012-09-24 6 views
1

유니 코드로 변환하고 유니 코드가 작동하는지 확인하기 위해 일부 단위 테스트를 작성하려고합니다. 여기 유니 코드 지원을위한 단위 테스트

는 mb_detect_encoding() 라인에 실패 내 현재 코드입니다, 나는 또한 유니 코드 지원의 유효한 시험인지 잘 모르겠어요 어떤 :

function testMultiLingualEncodings(){ 
     // Create this string via a heredoc. 
     $original = ' 
     A good day, World! 
Schönen Tag, Welt! 
Une bonne journée, tout le monde! 
يوم جيد، العالم 
좋은 일, 세계! 
Một ngày tốt lành, thế giới! 
こんにちは、世界! 
'; // Contains international characters from utf-8 
     $this->assertTrue(mb_detect_encoding($original, 'UTF-8', true) === true); // Fails regardless of whether strict is true or not. 
     $returned = query_item("select :multi limit 10", array(':multi'=>$original)); // Select this exact string, parameterized, from the database 
     //debug($returned, string_diff($returned, $original)); 
     $this->assertTrue((bool)$original); // test original isn't null. 
     $this->assertTrue((bool)$returned); // Test returned string isn't null. 
     $this->assertTrue($original === $returned); // Test original exactly matches returned string 
    } 

그래서) (mb_detect_encoding 말한다는 위의 초기 문자열은 UTF-8이 아닙니다. 또한 해당 문자열을 데이터베이스에 전달하고 꺼내어 원래 문자열과 비교하려고합니다. 그러나 데이터베이스 연결의 인코딩 테스트가 유효한 지 여부는 확실하지 않습니다.

일반적으로 utf-8 지원을위한 단위 테스트를 어떻게 만들 수 있습니까? 그 목표를 해결하기 위해 수정할 수있는 방법은 무엇입니까?

답변

3

미안하지만 그건 의미가 없습니다. 테스트 파일은 하나의 형식으로 인코딩됩니다. 테스트 문자열에 입력 한 내용은 파일과 동일한 방식으로 인코딩됩니다. 나는 또한 mb_detect_encoding 함수에 의존하지 않을 것이다. 문자열 "abcde"를 취해 봅시다. ASCII 또는 UTF-8 일 수 있습니다. 특수 문자가 없기 때문에 판단 할 수 없습니다. 인코딩은 데이터를 무력화하는 방법입니다.

// EDIT

그래도 난, 파일이 UTF-8로 인코딩되어 있는지 확인 할 수 있습니다 테스트 작업이

+0

$this->assertTrue(mb_detect_encoding($original, 'UTF-8') === 'UTF-8')을 할 수 있도록합니다. 그 시점에서, 나는 원래 파일이 utf-8이라는 것을 안다. 나는 또한 utf-8 인 문자열에 문자를 포함 시켰습니다. 따라서, "abcde"예제는 테스트 문자열에 확실히 -not-ascii 문자가 있기 때문에 적용되지 않는 것 같습니다. 나는 간단히 그 파일을 만들었지 만, 그것이 유니 코드 지원을 테스트하는 가장 좋은 방법이라고 주장하지는 않습니다. 그러나 그것이 작동하지 않는다면, 무엇을 할 것입니다. – Kzqai

+0

테스트 작업을하게하려면'$ this-> assertTrue (mb_detect_encoding ($ UTF-8 ') ==='UTF-8 ')' –

+0

@LukaszKujawa 답변을 편집 할 수 있도록 댓글을 옮길 수 있습니까? ? 진드기는 그 때 의미가 있습니다 :-) –