/// <summary> /// 创建一个新的 <see cref="DbConnection"/> 对象。 /// </summary> /// <param name="database"><see cref="IDatabase"/> 对象。</param> /// <param name="mode">分布式模式。</param> /// <returns><paramref name="database"/> 创建的 <see cref="DbConnection"/> 对象。</returns> public static DbConnection CreateConnection(this IDatabase database, DistributedMode mode = DistributedMode.Master) { Guard.ArgumentNull(database, nameof(database)); ConnectionString connStr = null; if (mode == DistributedMode.Slave && database is IDistributedDatabase distDb) { connStr = DistributedConnectionManager.GetConnection(distDb); } return(database.Provider.CreateConnection((connStr ?? database.ConnectionString).ToString())); }
public Mocks(SoulseekClientOptions clientOptions = null) { Client = new Mock <SoulseekClient>(clientOptions) { CallBase = true, }; Listener.Setup(m => m.Port).Returns(clientOptions?.ListenPort ?? new SoulseekClientOptions().ListenPort ?? 0); PeerConnectionManager.Setup(m => m.PendingSolicitations) .Returns(new Dictionary <int, string>()); DistributedConnectionManager.Setup(m => m.PendingSolicitations) .Returns(new Dictionary <int, string>()); Client.Setup(m => m.PeerConnectionManager).Returns(PeerConnectionManager.Object); Client.Setup(m => m.DistributedConnectionManager).Returns(DistributedConnectionManager.Object); Client.Setup(m => m.State).Returns(SoulseekClientStates.Connected | SoulseekClientStates.LoggedIn); Client.Setup(m => m.Options).Returns(clientOptions ?? new SoulseekClientOptions()); Client.Setup(m => m.Listener).Returns(Listener.Object); Client.Setup(m => m.Waiter).Returns(Waiter.Object); }