То, как я могу дразнить/фальсифицировать/блокировать, изолировало OracleException без общедоступного конструктора?

Для @angular версии 2.00 мне удалось найти список детей через свойство routeConfig.

Вот пример моего компонента. Обратите внимание, что я получаю доступ к дочерним элементам через свойство «parent», поскольку компонент на самом деле является одним из дочерних элементов, так как я передаю его в дочерний маршрутизатор-выход.

import { Component } from '@angular/core';
import {Route, ActivatedRoute, Router} from "@angular/router";

@Component({
    selector: 'list',
    template: require('./list.component.html')
})
export class ListComponent {
    children = new Array<RouteLink>();

    constructor(private router: Router, private activatedRoute: ActivatedRoute) {
        for (let child of activatedRoute.parent.routeConfig.children) {
            if (child.path && child.data["breadcrumb"]) {
                this.children.push(new RouteLink(child.path, child.data["breadcrumb"]));
            }
        }
    }
}

export class RouteLink {
    constructor(private path: string, private name: string) {  }
}
10
задан Fredrik Hedblad 29 June 2017 в 08:59
поделиться

6 ответов

Вот то, как Вы делаете это:

    ConstructorInfo ci = typeof(OracleException).GetConstructor(BindingFlags.NonPublic | BindingFlags.Instance, null, new Type[] {typeof(string), typeof(int)}, null);
    var c = (OracleException)ci.Invoke(new object[] { "some message", 123 });

Благодаря всему, что помогло, Вы были upvoted

5
ответ дан 3 December 2019 в 16:31
поделиться

Используйте отражение для инстанцирования OracleException. Посмотрите это сообщение в блоге

3
ответ дан 3 December 2019 в 16:31
поделиться

Использовать отражение для инстанцирования объекта OracleException? Замена

new OracleException()

с

object[] args = ... ;
(OracleException)Activator.CreateInstance(typeof(OracleException), args)
2
ответ дан 3 December 2019 в 16:31
поделиться

Можно ли записать тривиальную хранимую процедуру что сбои/ошибки каждый раз, затем использовать это для тестирования?

-1
ответ дан 3 December 2019 в 16:31
поделиться

Хорошее решение, Джордж. Это также работает и для SqlException:

        ConstructorInfo ci = typeof( SqlErrorCollection ).GetConstructor( BindingFlags.NonPublic | BindingFlags.Instance, null, new Type[] {  }, null );
        SqlErrorCollection errorCollection = (SqlErrorCollection) ci.Invoke(new object[]{});

        ci = typeof( SqlException ).GetConstructor( BindingFlags.NonPublic | BindingFlags.Instance, null, new Type[] { typeof( string ), typeof( SqlErrorCollection ) }, null );
        return (SqlException) ci.Invoke( new object[] { "some message", errorCollection } );

-dave

1
ответ дан 3 December 2019 в 16:31
поделиться

Я использую клиент поставщика данных Oracle.DataAccess.Client. У меня проблемы с построением нового экземпляра объекта OracleException, но он продолжает говорить мне, что нет общедоступных конструкторов. Я попробовал все идеи, показанные выше, и продолжаю получать исключение с нулевой ссылкой.

object[] args = { 1, "Test Message" };
ConstructorInfo ci = typeof(OracleException).GetConstructor(BindingFlags.NonPublic 
     | BindingFlags.Instance, null, System.Type.GetTypeArray(args), null);
var e = (OracleException)ci.Invoke(args);

При отладке тестового кода я всегда получаю NULL для ci.

Oracle изменил библиотеку, чтобы не допускать этого? Что я делаю не так и что мне нужно сделать, чтобы создать экземпляр объекта OracleException для использования с NMock?

Между прочим, я использую клиентскую библиотеку для версии 10g.

Спасибо,

Чарли

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

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