Как делают меня закрытые функции модульного теста из отдельного проекта в.NET VB?

Решил сам, и у меня все работает нормально.

I

заменили переменную 'token' на идентификатор устройства

. Тогда все работало нормально. Тогда код будет,

    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);
            }
6
задан user78369 15 March 2009 в 21:31
поделиться

3 ответа

Вы не можете (легко) протестировать закрытые методы из другого проекта, но довольно распространено протестировать внутренние методы (Friend в VB) от использования тестового проекта InternalsVisibleToAttribute. Это делает Friend участники, доступные для другого блока.

По-видимому, это было новым в VB 9, хотя это было доступно в C# 2... не совсем уверенном, почему, но это сообщение в блоге от Bart Де-Смет дает быстрый пример.

Обратите внимание, что, если Ваш производственный блок подписывается, Ваша опытная сборка должна будет быть подписана также, и необходимо будет указать открытый ключ в InternalsVisibleToAttribute аргументы. Дополнительную информацию см. в этом ответе Переполнения стека.

11
ответ дан 8 December 2019 в 16:10
поделиться

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
1
ответ дан 8 December 2019 в 16:10
поделиться

Можно использовать Отражение для вызова закрытых методов. Существует много образцов там, чтобы сделать это.

3
ответ дан 8 December 2019 в 16:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: