Я реализовал следующий код для выполнения файла JavaScript Jasmine Test Framework.
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 ... Когда я выполняю сценарий, я получаю следующую ошибку при исключении:
Exception = Can't find variable: jasmine
Хотя мой скрипт объявил переменную jasmine
в первой строке. В чем еще может быть проблема с приведенным выше кодом ???? Есть ли другой способ выполнить JavaScript ??
Еще один вопрос: поддерживает ли JavaScriptCore framework DOM и другие функциональные возможности HTML ??