Решил сам, и у меня все работает нормально.
I
заменили переменную 'token' на идентификатор устройства
blockquote>. Тогда все работало нормально. Тогда код будет,
var prToken = window.localStorage.getItem(GlobalVar.Inventory.device.id); if(prToken){ var subString = prToken.substring(10, prToken.length); if(subString == GlobalVar.Inventory.device.id){ console.log(window.localStorage.getItem(GlobalVar.Inventory.device.id)+"====token"); }else{ var rString = GlobalVar.Inventory.randomString(10, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',GlobalVar.Inventory.device.id); window.localStorage.setItem(GlobalVar.Inventory.device.id, rString); } }else{ var rString = GlobalVar.Inventory.randomString(10, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',GlobalVar.Inventory.device.id); window.localStorage.setItem(GlobalVar.Inventory.device.id, rString); }
Вы не можете (легко) протестировать закрытые методы из другого проекта, но довольно распространено протестировать внутренние методы (Friend
в VB) от использования тестового проекта InternalsVisibleToAttribute
. Это делает Friend
участники, доступные для другого блока.
По-видимому, это было новым в VB 9, хотя это было доступно в C# 2... не совсем уверенном, почему, но это сообщение в блоге от Bart Де-Смет дает быстрый пример.
Обратите внимание, что, если Ваш производственный блок подписывается, Ваша опытная сборка должна будет быть подписана также, и необходимо будет указать открытый ключ в InternalsVisibleToAttribute
аргументы. Дополнительную информацию см. в этом ответе Переполнения стека.
From a quick google search: http://www.codeproject.com/KB/cs/testnonpublicmembers.aspx
The basics: (this is pasted from the code project site linked above)
public static object RunStaticMethod(System.Type t, string strMethod,
object [] objParams)
{
BindingFlags eFlags =
BindingFlags.Static | BindingFlags.Public |
BindingFlags.NonPublic;
return RunMethod(t, strMethod,
null, aobjParams, eFlags);
} //end of method
public static object RunInstanceMethod(System.Type t, string strMethod,
object objInstance, object [] aobjParams)
{
BindingFlags eFlags = BindingFlags.Instance | BindingFlags.Public |
BindingFlags.NonPublic;
return RunMethod(t, strMethod,
objInstance, aobjParams, eFlags);
} //end of method
private static object RunMethod(System.Type t, string
strMethod, object objInstance, object [] aobjParams, BindingFlags eFlags)
{
MethodInfo m;
try
{
m = t.GetMethod(strMethod, eFlags);
if (m == null)
{
throw new ArgumentException("There is no method '" +
strMethod + "' for type '" + t.ToString() + "'.");
}
object objRet = m.Invoke(objInstance, aobjParams);
return objRet;
}
catch
{
throw;
}
} //end of method
Можно использовать Отражение для вызова закрытых методов. Существует много образцов там, чтобы сделать это.