テストしたいBALコード。メソッドのインラインロジックにmoqを設定する方法
public List<string> GetColorGroupCodes()
{
var colorGrpCodes = (IEnumerable<POCO.ColourGroup>)colorsRepository.GetColorGroups().Result;
var colGrpCodes = (from col in colorGrpCodes select col.GroupCode + "-" + col.Description).ToList();
return colGrpCodes;
}
colorsRepository.GetColorGroups()
のmoqを設定できます。しかし、私はmoqサービスコールの後に次の行のmoqを設定することはできません。私の質問をもっと理解するには、以下の方法のコメントをご覧ください。
[Fact]
public void GetColorGroupCodes()
{
var mockColorsRepository = CommonRepository.CreateInstanceOfIMock<IColorsRepository>();
var objectsList = Data();// it given the mocked response data as List
mockColorsRepository.Setup(rep => rep.GetColorGroups()).Returns(Task.FromResult<IEnumerable<Web.POCO.ColourGroup>>(objectsList));
// Now i can mockup the rep.GetColorGroups() and can retrun which is nead for the next logic **`(from col in colorGrpCodes select col.GroupCode + "-" + col.Description).ToList();`** in BAL
// But i don't know how to mock the logic **`(from col in colorGrpCodes select col.GroupCode + "-" + col.Description).ToList();`** via moq and return data as **`List<string>`** data type.
ColorsValidator colorsValidator = new ColorsValidator(mockColorsRepository.Object);
CoCApiResponse response = colorsValidator.GetColorsList();
Assert.Equal(response.Result, objectsList);
}
私はそれを嘲笑し、論理が返すものを返すだけです。出来ますか?私が間違って理解している場合、他のアイデアを提案してください。
:あなたは何をすべき
は、返される文字列は、あなたが期待するものであることを確認しますので、より多くのようなものですか? – Evk
ビジネスロジックを模擬しようとするべきではありませんが、代わりにテストしてください。 – 3615
私はちょうどそれを嘲笑し、ロジックが返すものを返す必要があります。出来ますか?私が間違って理解している場合、他のアイデアを提案してください。 –