Один из вариантов - вы можете создать метод фабрики для foo
, а затем зарегистрировать эту фабрику в поставщиках для модуля. Затем в своем модульном тесте вы можете ввести все, что захотите, и подделать участников.
import {foo} from 'fooProject';
export function fooFactory(): any {
return foo;
}
@NgModule({
providers: [{ provide: 'Foo', useFactory: fooFactory }]
})
export class YourModule { }
import { Inject, Component } from '@angular/core';
export class YourComponent {
constructor(@Inject('Foo') private foo:any){}
trigger() {
this.foo.bar();
}
}
Я думаю, что существует значение конфигурации, можно вставить appSettings раздел app.config/web.config для включения внутренних операторов отладки в log4net:
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
</appSettings>
Это даст Вам некоторое понимание любых ошибок, которые мог бы глотать log4net.
Расширение предыдущего ответа.
Чтобы добавить прослушиватель трассировки для трассировки log4net.Internal.Debug, добавьте это в конфигурацию своего приложения:
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add
name="textWriterTraceListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="c:\temp\log4net.txt" />
</listeners>
</trace>
</system.diagnostics>
Замените значение атрибута initializeData выше на желаемый путь к файлу журнала. Убедитесь, что у приложения или серверного процесса ASP.NET есть разрешение на запись в этот файл.
Еще одна вещь, которую вы можете сделать, это проверить сообщения, которые возвращаются из конфигурации log4net при запуске. Начиная с log4net версии 1.2.11, методы XmlConfigurator.Configure() возвращают коллекцию ICollection, содержащую строки со списком проблем, возникших в процессе настройки.
Итак, если у вас есть что-то вроде этого:
XmlConfigurator.Configure();
измените его на
ICollection configMessages = XmlConfigurator.Configure();
и проверьте configMessages в отладчике или распечатайте их где-нибудь, например
foreach (string msg in configMessages)
{
Console.WriteLine(msg);
}
Если ничего не помогает, загрузите исходный код log4net, добавьте проект в свое решение и укажите ссылку на проект вместо log4net.dll. Теперь вы можете перейти к вызовам log4net в отладчике.