0

ここで何が起こっているのかわかりません。. .

パーサーをテストするために設計された単純な単体テストがあります。テストケースは次のようになります。

[parser didStartElement:@"mobileresponse" attributes:[NSDictionary dictionaryWithObject:@"http://www.espn.com/" forKey:@"rooturl"]];
[parser didStartElement:@"content" attributes:[NSDictionary dictionaryWithObject:@"/soccer" forKey:@"mobileFriendlyUrl"]];
NSString *mobileFriendlyURL = [parser valueForKey:@"mobile_friendly_url"];
STAssertEqualObjects(@"http://www.espn.com/soccer", mobileFriendlyURL, @"url path should be appended to root url");

これは毎回失敗していますが、ここに出力があります

'http://www.espn.com/soccer' should be equal to 'http://www.espn.com/soccer' url path should be appended to root url

私は気が狂っていますか、それともまったく同じですか?? これがエラーをスローしている理由を誰かが知っていますか?

4

2 に答える 2

0

nsstring 宣言を次のように変更するだけでした。

[NSString stringWithFormat:@"%@",[parser valueForKey:@"mobile_friendly_url"]];
于 2012-10-29T22:35:01.693 に答える
0

おそらく、これの理由は、[parser valueForKey:@"mobile_friendly_url"]が返されないことNSStringです。

次の例を考えてみましょう (エラーは指摘するためにあります)。

NSString *mobileFriendlyURL = [NSURL URLWithString:@"http://www.espn.com/soccer"];
STAssertEqualObjects(@"http://www.espn.com/soccer", mobileFriendlyURL, @"");

これは、異なる 2 つのオブジェクトを比較したため、同じメッセージで失敗します (それが であると想定し、その型を として宣言したとしても)。最後に、メッセージはもちろんあなたの文字列と同じのを出力するだけなので、さらに混乱します:)mobileFriendlyURLNSStringNSStringdescriptionNSURL

この理論をテストする簡単な方法は、次のようにすることです。

NSString *mobileFriendlyURL = [[NSURL URLWithString:@"http://www.espn.com/soccer"] description];
STAssertEqualObjects(@"http://www.espn.com/soccer", mobileFriendlyURL, @"");

または、クラスを照会するために、次のようなことを行うことをお勧めします。

NSLog(@"%@", [mobileFriendlyURL class]);

これが理にかなっていることを願っています...

于 2012-10-29T22:37:22.847 に答える