1
Jasmine TestフレームワークのJavaScriptファイルを実行するために、次のコードを実装しました。JavaScriptCoreフレームワークでJavaScriptを実行するには?
NSMutableArray * fArr = [[NSBundle mainBundle] pathsForResourcesOfType:@"js" inDirectory:@"scripts/JS_TestFramework/lib/jasmine-1.1.0"];
NSMutableString *fullFrameworkScript = nil;
NSString *script;
for (int i = fArr.count-1; i >= 0; i--)
{
NSMutableString* filePath = [fArr objectAtIndex:i];
fullFrameworkScript = [NSMutableString string];
NSError* error;
script = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];
if(script)
{
[fullFrameworkScript appendString:script];
}
}
JSValueRef result;
if(fullFrameworkScript)
{
JSStringRef scriptJS = JSStringCreateWithCFString(fullFrameworkScript);
JSValueRef exception = NULL;
result = JSEvaluateScript(context, scriptJS, NULL, NULL, 1, &exception);
if(exception)
{
[self logException:exception];
exception = NULL;
}
JSStringRelease(scriptJS);
}
JSStringRef step1 = JSStringCreateWithCFString(@"jasmine.getEnv().addReporter(new jasmine.TrivialReporter())");
JSValueRef exception = NULL;
JSObjectRef fn = JSObjectMakeFunction(context, step1, 0, NULL, JSStringCreateWithCFString(script), NULL, 0, NULL);
result = JSObjectCallAsFunction(context, fn, NULL, 0, NULL, &exception);
if(exception)
{
[self logException:exception];
exception = NULL;
}
JSStringRelease(step1);
[MTPScriptExecutionContext removeAllObjects];
JSStringRef htmlResult = JSValueToStringCopy(context, result, NULL);
NSString *htmlData = [NSMakeCollectable(JSStringCopyCFString(kCFAllocatorDefault, htmlResult)) autorelease];
JSStringRelease(htmlResult);
return htmlData;
これは、HTMLデータを返す...私は例外で、次のエラー取得していたスクリプトを実行していたとき、私の関数である:私のスクリプトは、最初の行でjasmine
変数を宣言したが
Exception = Can't find variable: jasmine
を。上記のコードで他に何が問題になるか? JavaScriptを実行する他の方法はありますか?
もう1つ質問:JavaScriptCoreフレームワークは、DOMやその他のHTML機能をサポートしていますか?
PhantomJS岩をテスト行いたい場合。 –
+1:ありがとう.... – DShah