2017-11-07 19 views
0

変更する方法はありますかInstalledUICultureはテスト済みですか?InstalledUICultureをCで修正する

var groups = new ObservableDictionary<string, IGroupViewModel>(vm => 
    vm.Name.ToString(CultureInfo.InstalledUICulture)); 
var isGroupExists = groups.ContainsKey(GroupName.ToString(CultureInfo.InstalledUICulture)); 
if (!isGroupExists) 
{ 
    groups.Add(new GroupViewModel()); 
} 
+0

おそらくa)プロパティは[get only](http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.installeduiculture.aspx)であり、b)それは " Windows APIのGetSystemDefaultUILanguageに相当します。 "異なる文化の下で機能をテストしたい場合は、プロパティに直接アクセスせず、インダイレクションを使用して、 'InstalledUiCultureProvider'クラスのような、テストしたいものを返すことができます。 – stuartd

+0

私に例を教えてもらえますか? –

+0

'InstalledUICulture'をどのように使っているかを表示します。 – stuartd

答えて

1

あなたは私にいくつかの例をお願いできますか?

このようなものです。コードを直接CultureInfo.InstalledUICultureに連結するのではなく、現在のUIカルチャが何でも好きなように間接的なレイヤーを使用することができます。

私はあなたのクラスを知っていないか、あなたがサービスを作成する方法を、私はDIのいくつかの並べ替えを前提とし、(あなたがそれを呼び出すために好きまたはサービスまたは)プロバイダ

// App code 
public interface ICurrentCultureProvider { 
    CultureInfo CurrentInstalledUICulture { get; } 
} 

public class CurrentCultureProvider : ICurrentCultureProvider { 
    public CultureInfo CurrentInstalledUICulture => CultureInfo.InstalledUICulture; 
} 

public class SUT { 
    private readonly ICurrentCultureProvider cultureProvider; 

    public SUT(ICurrentCultureProvider cultureProvider) { 
     this.cultureProvider = cultureProvider; 
    } 

    public object Method(??? vm) { 
     var currentUICulture = cultureProvider.CurrentInstalledUICulture; 
     var groups = new ObservableDictionary<string, IGroupViewModel>(vm => vm.Name.ToString(currentUICulture)); 
     var isGroupExists = groups.ContainsKey(GroupName.ToString(currentUICulture)); 

     if (!isGroupExists) { 
      groups.Add(new GroupViewModel()); 
     } 

     return groups; 
    } 
} 

// Test code. Could make this return any culture by using a parameter. 
public class GermanCultureProvider : ICurrentCultureProvider { 
    public CultureInfo CurrentInstalledUICulture => new CultureInfo("de-DE"); 
} 

[TestFixture] 
public class Sample_Test { 

    [Test] 
    public void Demo() { 
     var sut = new SUT(new GermanCultureProvider()); 
     var vm = new ???(); 
     var groups = sut.Method(vm); 
     // Assert correct in German etc 
    } 
} 
のコンストラクタのパラメータを使用しました
+0

ありがとうございました:-) –

関連する問題