Operator '==' cannot be applied to operands of type 'Task<(IEnumerable, int)>' and...
I had the following function to be mocked.
public interface IRepository
{
Task<IEnumerable<Item>> GetItems(int total);
}
And my mocking code was
private readonly IEnumerable<Item> stubList = new List<Item> { new Item { } };
mockRepository = Mock.Of<IRepository>(r => r.GetItems(50) == Task.FromResult(stubList));
It worked on both my desktop (Visual studio 2017) and msbuild (MSBuild auto-detection: using msbuild version '15.8.169.51996' from 'C:Program Files (x86)Microsoft Visual Studio2017BuildToolsMSBuild15.0bin'
) on Jenkin server.
Now the method has been changed to
public interface IRepository
{
Task<(IEnumerable<Item>, int)> GetItems(int total);
}
And the mocking code was changed to
private readonly IEnumerable<Item> stubList = new List<Item> { new Item { } };
var m = (stubList, 1);
mockRepository = Mock.Of<IRepository>(r => r.GetItems(50) == Task.FromResult(m));
It still works on my desktop (visual studio 2017). But msbuild failed with the following error message?
error CS0019: Operator '==' cannot be applied to operands of type
'Task<(IEnumerable<Item>, int)>' and 'Task<IEnumerable<Item>>'
build.log:
CoreResGen:
"C:Program FilesMicrosoft SDKsWindowsv6.0AbinResgen.exe" /useSourcePath /r:"D:Jenkinsworkspace...packagesDocumentFormat.OpenXml.2.8.1libnet35DocumentFormat.OpenXml.dll" /r:C:WindowsMicrosoft.NETFrameworkv2.0.50727Microsoft.JScript.dll /r:C:WindowsMicrosoft.NETFrameworkv2.0.50727mscorlib.dll /r:"C:Program Files (x86)Reference AssembliesMicrosoftFrameworkv3.5System.Core.dll" /r:"C:Program Files (x86)Reference AssembliesMicrosoftFrameworkv3.5System.Data.DataSetExtensions.dll" /r:C:WindowsMicrosoft.NETFrameworkv2.0.50727System.Data.dll /r:C:WindowsMicrosoft.NETFrameworkv2.0.50727System.Design.dll /r:C:WindowsMicrosoft.NETFrameworkv2.0.50727System.dll /r:C:WindowsMicrosoft.NETFrameworkv2.0.50727System.Drawing.dll /r:"C:Program Files (x86)Reference AssembliesMicrosoftFrameworkv3.0System.Runtime.Serialization.dll" /r:"C:Program Files (x86)Reference AssembliesMicrosoftFrameworkv3.0System.ServiceModel.dll" /r:C:WindowsMicrosoft.NETFrameworkv2.0.50727System.Web.Services.dll /r:C:WindowsMicrosoft.NETFrameworkv2.0.50727System.Windows.Forms.dll /r:C:WindowsMicrosoft.NETFrameworkv2.0.50727System.Xml.dll /r:"C:Program Files (x86)Reference AssembliesMicrosoftFrameworkv3.5System.Xml.Linq.dll" /r:"C:Program Files (x86)Reference AssembliesMicrosoftFrameworkv3.0WindowsBase.dll" /compile ComponentsCheckedComboBoxPopupComboBox.resx,objReleasePresentationControls.PopupComboBox.resources ComponentsDGVDgvDesignerColumnList.resx,objReleaseInfrastructure.DgvDesignerColumnList.resources ComponentsDGVfrmGridColumnsExt.resx,objReleaseInfrastructure.frmGridColumnsExt.resources ComponentsDGVdgv.resx,objReleaseInfrastructure.DGV.resources ComponentsDGVfrmChangeGridState.resx,objReleaseInfrastructure.frmChangeGridState.resources ComponentsDGVfrmGridColumns.resx,objReleaseInfrastructure.frmGridColumns.resources ComponentsUserControl_Folder.resx,objReleaseInfrastructure.UserControl_Folder.resources frmDropDownBox.resx,objReleaseInfrastructure.frmDropDownBox.resources frmUsersChangeHistory.resx,objReleaseInfrastructure.frmUsersChangeHistory.resources frmUserPermissions.resx,objReleaseInfrastructure.frmUserPermissions.resources frmUserRegProdGroups.resx,objReleaseInfrastructure.frmUserRegProdGroups.resources frmErrorBox.resx,objReleaseInfrastructure.frmErrorBox.resources frmGridBox.resx,objReleaseInfrastructure.frmGridBox.resources frmInputBox.resx,objReleaseInfrastructure.frmInputBox.resources frmLongTask.resx,objReleaseInfrastructure.frmLongTask.resources frmNoteBox.resx,objReleaseInfrastructure.frmNoteBox.resources ComponentsMonthPicker.resx,objReleaseInfrastructure.MonthPicker.resources frmUserGroups.resx,objReleaseInfrastructure.frmUserGroups.resources frmUsers.resx,objReleaseInfrastructure.frmUsers.resources PropertiesResources.resx,objReleaseInfrastructure.Properties.Resources.resources ReportsfrmEditReports.resx,objReleaseInfrastructure.frmEditReports.resources ReportsfrmJobsMaintenance.resx,objReleaseInfrastructure.frmJobsMaintenance.resources ReportsfrmRunReports.resx,objReleaseInfrastructure.frmRunReports.resources ReportsfrmSelectReport.resx,objReleaseInfrastructure.frmSelectReport.resources ReportsfrmShowReportLog.resx,objReleaseInfrastructure.frmShowReportLog.resources
c# visual-studio msbuild moq
add a comment |
I had the following function to be mocked.
public interface IRepository
{
Task<IEnumerable<Item>> GetItems(int total);
}
And my mocking code was
private readonly IEnumerable<Item> stubList = new List<Item> { new Item { } };
mockRepository = Mock.Of<IRepository>(r => r.GetItems(50) == Task.FromResult(stubList));
It worked on both my desktop (Visual studio 2017) and msbuild (MSBuild auto-detection: using msbuild version '15.8.169.51996' from 'C:Program Files (x86)Microsoft Visual Studio2017BuildToolsMSBuild15.0bin'
) on Jenkin server.
Now the method has been changed to
public interface IRepository
{
Task<(IEnumerable<Item>, int)> GetItems(int total);
}
And the mocking code was changed to
private readonly IEnumerable<Item> stubList = new List<Item> { new Item { } };
var m = (stubList, 1);
mockRepository = Mock.Of<IRepository>(r => r.GetItems(50) == Task.FromResult(m));
It still works on my desktop (visual studio 2017). But msbuild failed with the following error message?
error CS0019: Operator '==' cannot be applied to operands of type
'Task<(IEnumerable<Item>, int)>' and 'Task<IEnumerable<Item>>'
build.log:
CoreResGen:
"C:Program FilesMicrosoft SDKsWindowsv6.0AbinResgen.exe" /useSourcePath /r:"D:Jenkinsworkspace...packagesDocumentFormat.OpenXml.2.8.1libnet35DocumentFormat.OpenXml.dll" /r:C:WindowsMicrosoft.NETFrameworkv2.0.50727Microsoft.JScript.dll /r:C:WindowsMicrosoft.NETFrameworkv2.0.50727mscorlib.dll /r:"C:Program Files (x86)Reference AssembliesMicrosoftFrameworkv3.5System.Core.dll" /r:"C:Program Files (x86)Reference AssembliesMicrosoftFrameworkv3.5System.Data.DataSetExtensions.dll" /r:C:WindowsMicrosoft.NETFrameworkv2.0.50727System.Data.dll /r:C:WindowsMicrosoft.NETFrameworkv2.0.50727System.Design.dll /r:C:WindowsMicrosoft.NETFrameworkv2.0.50727System.dll /r:C:WindowsMicrosoft.NETFrameworkv2.0.50727System.Drawing.dll /r:"C:Program Files (x86)Reference AssembliesMicrosoftFrameworkv3.0System.Runtime.Serialization.dll" /r:"C:Program Files (x86)Reference AssembliesMicrosoftFrameworkv3.0System.ServiceModel.dll" /r:C:WindowsMicrosoft.NETFrameworkv2.0.50727System.Web.Services.dll /r:C:WindowsMicrosoft.NETFrameworkv2.0.50727System.Windows.Forms.dll /r:C:WindowsMicrosoft.NETFrameworkv2.0.50727System.Xml.dll /r:"C:Program Files (x86)Reference AssembliesMicrosoftFrameworkv3.5System.Xml.Linq.dll" /r:"C:Program Files (x86)Reference AssembliesMicrosoftFrameworkv3.0WindowsBase.dll" /compile ComponentsCheckedComboBoxPopupComboBox.resx,objReleasePresentationControls.PopupComboBox.resources ComponentsDGVDgvDesignerColumnList.resx,objReleaseInfrastructure.DgvDesignerColumnList.resources ComponentsDGVfrmGridColumnsExt.resx,objReleaseInfrastructure.frmGridColumnsExt.resources ComponentsDGVdgv.resx,objReleaseInfrastructure.DGV.resources ComponentsDGVfrmChangeGridState.resx,objReleaseInfrastructure.frmChangeGridState.resources ComponentsDGVfrmGridColumns.resx,objReleaseInfrastructure.frmGridColumns.resources ComponentsUserControl_Folder.resx,objReleaseInfrastructure.UserControl_Folder.resources frmDropDownBox.resx,objReleaseInfrastructure.frmDropDownBox.resources frmUsersChangeHistory.resx,objReleaseInfrastructure.frmUsersChangeHistory.resources frmUserPermissions.resx,objReleaseInfrastructure.frmUserPermissions.resources frmUserRegProdGroups.resx,objReleaseInfrastructure.frmUserRegProdGroups.resources frmErrorBox.resx,objReleaseInfrastructure.frmErrorBox.resources frmGridBox.resx,objReleaseInfrastructure.frmGridBox.resources frmInputBox.resx,objReleaseInfrastructure.frmInputBox.resources frmLongTask.resx,objReleaseInfrastructure.frmLongTask.resources frmNoteBox.resx,objReleaseInfrastructure.frmNoteBox.resources ComponentsMonthPicker.resx,objReleaseInfrastructure.MonthPicker.resources frmUserGroups.resx,objReleaseInfrastructure.frmUserGroups.resources frmUsers.resx,objReleaseInfrastructure.frmUsers.resources PropertiesResources.resx,objReleaseInfrastructure.Properties.Resources.resources ReportsfrmEditReports.resx,objReleaseInfrastructure.frmEditReports.resources ReportsfrmJobsMaintenance.resx,objReleaseInfrastructure.frmJobsMaintenance.resources ReportsfrmRunReports.resx,objReleaseInfrastructure.frmRunReports.resources ReportsfrmSelectReport.resx,objReleaseInfrastructure.frmSelectReport.resources ReportsfrmShowReportLog.resx,objReleaseInfrastructure.frmShowReportLog.resources
c# visual-studio msbuild moq
You cannot compareTask<(IEnumerable<Item>, int)>
andTask<IEnumerable<Item>>
. The former is a task of enumerable of tuple of Item and int, the latter is a task of enumerable of Item. You see?
– abatishchev
Nov 13 '18 at 0:46
This is not the issue. The code doesn't compare with different type. The error message is a little bit confused
– ca9163d9
Nov 13 '18 at 0:49
add a comment |
I had the following function to be mocked.
public interface IRepository
{
Task<IEnumerable<Item>> GetItems(int total);
}
And my mocking code was
private readonly IEnumerable<Item> stubList = new List<Item> { new Item { } };
mockRepository = Mock.Of<IRepository>(r => r.GetItems(50) == Task.FromResult(stubList));
It worked on both my desktop (Visual studio 2017) and msbuild (MSBuild auto-detection: using msbuild version '15.8.169.51996' from 'C:Program Files (x86)Microsoft Visual Studio2017BuildToolsMSBuild15.0bin'
) on Jenkin server.
Now the method has been changed to
public interface IRepository
{
Task<(IEnumerable<Item>, int)> GetItems(int total);
}
And the mocking code was changed to
private readonly IEnumerable<Item> stubList = new List<Item> { new Item { } };
var m = (stubList, 1);
mockRepository = Mock.Of<IRepository>(r => r.GetItems(50) == Task.FromResult(m));
It still works on my desktop (visual studio 2017). But msbuild failed with the following error message?
error CS0019: Operator '==' cannot be applied to operands of type
'Task<(IEnumerable<Item>, int)>' and 'Task<IEnumerable<Item>>'
build.log:
CoreResGen:
"C:Program FilesMicrosoft SDKsWindowsv6.0AbinResgen.exe" /useSourcePath /r:"D:Jenkinsworkspace...packagesDocumentFormat.OpenXml.2.8.1libnet35DocumentFormat.OpenXml.dll" /r:C:WindowsMicrosoft.NETFrameworkv2.0.50727Microsoft.JScript.dll /r:C:WindowsMicrosoft.NETFrameworkv2.0.50727mscorlib.dll /r:"C:Program Files (x86)Reference AssembliesMicrosoftFrameworkv3.5System.Core.dll" /r:"C:Program Files (x86)Reference AssembliesMicrosoftFrameworkv3.5System.Data.DataSetExtensions.dll" /r:C:WindowsMicrosoft.NETFrameworkv2.0.50727System.Data.dll /r:C:WindowsMicrosoft.NETFrameworkv2.0.50727System.Design.dll /r:C:WindowsMicrosoft.NETFrameworkv2.0.50727System.dll /r:C:WindowsMicrosoft.NETFrameworkv2.0.50727System.Drawing.dll /r:"C:Program Files (x86)Reference AssembliesMicrosoftFrameworkv3.0System.Runtime.Serialization.dll" /r:"C:Program Files (x86)Reference AssembliesMicrosoftFrameworkv3.0System.ServiceModel.dll" /r:C:WindowsMicrosoft.NETFrameworkv2.0.50727System.Web.Services.dll /r:C:WindowsMicrosoft.NETFrameworkv2.0.50727System.Windows.Forms.dll /r:C:WindowsMicrosoft.NETFrameworkv2.0.50727System.Xml.dll /r:"C:Program Files (x86)Reference AssembliesMicrosoftFrameworkv3.5System.Xml.Linq.dll" /r:"C:Program Files (x86)Reference AssembliesMicrosoftFrameworkv3.0WindowsBase.dll" /compile ComponentsCheckedComboBoxPopupComboBox.resx,objReleasePresentationControls.PopupComboBox.resources ComponentsDGVDgvDesignerColumnList.resx,objReleaseInfrastructure.DgvDesignerColumnList.resources ComponentsDGVfrmGridColumnsExt.resx,objReleaseInfrastructure.frmGridColumnsExt.resources ComponentsDGVdgv.resx,objReleaseInfrastructure.DGV.resources ComponentsDGVfrmChangeGridState.resx,objReleaseInfrastructure.frmChangeGridState.resources ComponentsDGVfrmGridColumns.resx,objReleaseInfrastructure.frmGridColumns.resources ComponentsUserControl_Folder.resx,objReleaseInfrastructure.UserControl_Folder.resources frmDropDownBox.resx,objReleaseInfrastructure.frmDropDownBox.resources frmUsersChangeHistory.resx,objReleaseInfrastructure.frmUsersChangeHistory.resources frmUserPermissions.resx,objReleaseInfrastructure.frmUserPermissions.resources frmUserRegProdGroups.resx,objReleaseInfrastructure.frmUserRegProdGroups.resources frmErrorBox.resx,objReleaseInfrastructure.frmErrorBox.resources frmGridBox.resx,objReleaseInfrastructure.frmGridBox.resources frmInputBox.resx,objReleaseInfrastructure.frmInputBox.resources frmLongTask.resx,objReleaseInfrastructure.frmLongTask.resources frmNoteBox.resx,objReleaseInfrastructure.frmNoteBox.resources ComponentsMonthPicker.resx,objReleaseInfrastructure.MonthPicker.resources frmUserGroups.resx,objReleaseInfrastructure.frmUserGroups.resources frmUsers.resx,objReleaseInfrastructure.frmUsers.resources PropertiesResources.resx,objReleaseInfrastructure.Properties.Resources.resources ReportsfrmEditReports.resx,objReleaseInfrastructure.frmEditReports.resources ReportsfrmJobsMaintenance.resx,objReleaseInfrastructure.frmJobsMaintenance.resources ReportsfrmRunReports.resx,objReleaseInfrastructure.frmRunReports.resources ReportsfrmSelectReport.resx,objReleaseInfrastructure.frmSelectReport.resources ReportsfrmShowReportLog.resx,objReleaseInfrastructure.frmShowReportLog.resources
c# visual-studio msbuild moq
I had the following function to be mocked.
public interface IRepository
{
Task<IEnumerable<Item>> GetItems(int total);
}
And my mocking code was
private readonly IEnumerable<Item> stubList = new List<Item> { new Item { } };
mockRepository = Mock.Of<IRepository>(r => r.GetItems(50) == Task.FromResult(stubList));
It worked on both my desktop (Visual studio 2017) and msbuild (MSBuild auto-detection: using msbuild version '15.8.169.51996' from 'C:Program Files (x86)Microsoft Visual Studio2017BuildToolsMSBuild15.0bin'
) on Jenkin server.
Now the method has been changed to
public interface IRepository
{
Task<(IEnumerable<Item>, int)> GetItems(int total);
}
And the mocking code was changed to
private readonly IEnumerable<Item> stubList = new List<Item> { new Item { } };
var m = (stubList, 1);
mockRepository = Mock.Of<IRepository>(r => r.GetItems(50) == Task.FromResult(m));
It still works on my desktop (visual studio 2017). But msbuild failed with the following error message?
error CS0019: Operator '==' cannot be applied to operands of type
'Task<(IEnumerable<Item>, int)>' and 'Task<IEnumerable<Item>>'
build.log:
CoreResGen:
"C:Program FilesMicrosoft SDKsWindowsv6.0AbinResgen.exe" /useSourcePath /r:"D:Jenkinsworkspace...packagesDocumentFormat.OpenXml.2.8.1libnet35DocumentFormat.OpenXml.dll" /r:C:WindowsMicrosoft.NETFrameworkv2.0.50727Microsoft.JScript.dll /r:C:WindowsMicrosoft.NETFrameworkv2.0.50727mscorlib.dll /r:"C:Program Files (x86)Reference AssembliesMicrosoftFrameworkv3.5System.Core.dll" /r:"C:Program Files (x86)Reference AssembliesMicrosoftFrameworkv3.5System.Data.DataSetExtensions.dll" /r:C:WindowsMicrosoft.NETFrameworkv2.0.50727System.Data.dll /r:C:WindowsMicrosoft.NETFrameworkv2.0.50727System.Design.dll /r:C:WindowsMicrosoft.NETFrameworkv2.0.50727System.dll /r:C:WindowsMicrosoft.NETFrameworkv2.0.50727System.Drawing.dll /r:"C:Program Files (x86)Reference AssembliesMicrosoftFrameworkv3.0System.Runtime.Serialization.dll" /r:"C:Program Files (x86)Reference AssembliesMicrosoftFrameworkv3.0System.ServiceModel.dll" /r:C:WindowsMicrosoft.NETFrameworkv2.0.50727System.Web.Services.dll /r:C:WindowsMicrosoft.NETFrameworkv2.0.50727System.Windows.Forms.dll /r:C:WindowsMicrosoft.NETFrameworkv2.0.50727System.Xml.dll /r:"C:Program Files (x86)Reference AssembliesMicrosoftFrameworkv3.5System.Xml.Linq.dll" /r:"C:Program Files (x86)Reference AssembliesMicrosoftFrameworkv3.0WindowsBase.dll" /compile ComponentsCheckedComboBoxPopupComboBox.resx,objReleasePresentationControls.PopupComboBox.resources ComponentsDGVDgvDesignerColumnList.resx,objReleaseInfrastructure.DgvDesignerColumnList.resources ComponentsDGVfrmGridColumnsExt.resx,objReleaseInfrastructure.frmGridColumnsExt.resources ComponentsDGVdgv.resx,objReleaseInfrastructure.DGV.resources ComponentsDGVfrmChangeGridState.resx,objReleaseInfrastructure.frmChangeGridState.resources ComponentsDGVfrmGridColumns.resx,objReleaseInfrastructure.frmGridColumns.resources ComponentsUserControl_Folder.resx,objReleaseInfrastructure.UserControl_Folder.resources frmDropDownBox.resx,objReleaseInfrastructure.frmDropDownBox.resources frmUsersChangeHistory.resx,objReleaseInfrastructure.frmUsersChangeHistory.resources frmUserPermissions.resx,objReleaseInfrastructure.frmUserPermissions.resources frmUserRegProdGroups.resx,objReleaseInfrastructure.frmUserRegProdGroups.resources frmErrorBox.resx,objReleaseInfrastructure.frmErrorBox.resources frmGridBox.resx,objReleaseInfrastructure.frmGridBox.resources frmInputBox.resx,objReleaseInfrastructure.frmInputBox.resources frmLongTask.resx,objReleaseInfrastructure.frmLongTask.resources frmNoteBox.resx,objReleaseInfrastructure.frmNoteBox.resources ComponentsMonthPicker.resx,objReleaseInfrastructure.MonthPicker.resources frmUserGroups.resx,objReleaseInfrastructure.frmUserGroups.resources frmUsers.resx,objReleaseInfrastructure.frmUsers.resources PropertiesResources.resx,objReleaseInfrastructure.Properties.Resources.resources ReportsfrmEditReports.resx,objReleaseInfrastructure.frmEditReports.resources ReportsfrmJobsMaintenance.resx,objReleaseInfrastructure.frmJobsMaintenance.resources ReportsfrmRunReports.resx,objReleaseInfrastructure.frmRunReports.resources ReportsfrmSelectReport.resx,objReleaseInfrastructure.frmSelectReport.resources ReportsfrmShowReportLog.resx,objReleaseInfrastructure.frmShowReportLog.resources
c# visual-studio msbuild moq
c# visual-studio msbuild moq
edited Nov 13 '18 at 16:52
asked Nov 12 '18 at 23:58
ca9163d9
8,0792389195
8,0792389195
You cannot compareTask<(IEnumerable<Item>, int)>
andTask<IEnumerable<Item>>
. The former is a task of enumerable of tuple of Item and int, the latter is a task of enumerable of Item. You see?
– abatishchev
Nov 13 '18 at 0:46
This is not the issue. The code doesn't compare with different type. The error message is a little bit confused
– ca9163d9
Nov 13 '18 at 0:49
add a comment |
You cannot compareTask<(IEnumerable<Item>, int)>
andTask<IEnumerable<Item>>
. The former is a task of enumerable of tuple of Item and int, the latter is a task of enumerable of Item. You see?
– abatishchev
Nov 13 '18 at 0:46
This is not the issue. The code doesn't compare with different type. The error message is a little bit confused
– ca9163d9
Nov 13 '18 at 0:49
You cannot compare
Task<(IEnumerable<Item>, int)>
and Task<IEnumerable<Item>>
. The former is a task of enumerable of tuple of Item and int, the latter is a task of enumerable of Item. You see?– abatishchev
Nov 13 '18 at 0:46
You cannot compare
Task<(IEnumerable<Item>, int)>
and Task<IEnumerable<Item>>
. The former is a task of enumerable of tuple of Item and int, the latter is a task of enumerable of Item. You see?– abatishchev
Nov 13 '18 at 0:46
This is not the issue. The code doesn't compare with different type. The error message is a little bit confused
– ca9163d9
Nov 13 '18 at 0:49
This is not the issue. The code doesn't compare with different type. The error message is a little bit confused
– ca9163d9
Nov 13 '18 at 0:49
add a comment |
2 Answers
2
active
oldest
votes
Try using the more verbose approach instead of the LINQ to Mocks
private readonly IEnumerable<Item> stubList = new List<Item> { new Item { } };
//...
var expected = (stubList, 1);
var mock = new Mock<IRepository>();
mock
.Setup(_ => _.GetItems(50))
.ReturnsAsync(expected);
IRepository mockRepository = mock.Object;
//...
The framework may be having issues trying to evaluate the expression with the new syntax
msbuild working now. Thanks. Why Linq to Mock failed on msbuild though?
– ca9163d9
Nov 13 '18 at 0:19
@ca9163d9 The framework probably could not evaluate the expression with the new syntax.
– Nkosi
Nov 13 '18 at 0:22
add a comment |
When I try your code:
class Program
{
static void Main(string args)
{
var stubList = new List<Item>
{
new Item()
};
var m = (stubList, 1);
var mockRepository = Mock.Of<IRepository>(r => r.GetItems(50) == Task.FromResult(m));
}
}
interface IRepository
{
Task<(IEnumerable<Item>, int)> GetItems(int total);
}
class Item
{
}
I'm getting different compiler error:
CS0019 Operator '==' cannot be applied to operands of type 'Task<(IEnumerable, int)>' and 'Task<(List stubList, int)>'
This happens because you compare Task<(List<Item>, int)>
and Task<(IEnumerable<Item>, int)>
. Task<T>
is not co-variant (opposite to List<T>
for instance) so the error is expected.
But why your question contains different compiler error?
If I change the code to this:
var m = ((IEnumerable<Item>)stubList, 1);
or this:
(IEnumerable<Item>, int) m = (stubList, 1);
then it complies fine.
ThestubList
in my code is defined as a field with the type ofIEnumerable<Item>
.
– ca9163d9
Nov 13 '18 at 2:25
@ca9163d9: Oh, right, I see. Then it's not an issue, I cannot reproduce it.
– abatishchev
Nov 13 '18 at 18:01
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53271844%2foperator-cannot-be-applied-to-operands-of-type-taskienumerableitem-in%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
Try using the more verbose approach instead of the LINQ to Mocks
private readonly IEnumerable<Item> stubList = new List<Item> { new Item { } };
//...
var expected = (stubList, 1);
var mock = new Mock<IRepository>();
mock
.Setup(_ => _.GetItems(50))
.ReturnsAsync(expected);
IRepository mockRepository = mock.Object;
//...
The framework may be having issues trying to evaluate the expression with the new syntax
msbuild working now. Thanks. Why Linq to Mock failed on msbuild though?
– ca9163d9
Nov 13 '18 at 0:19
@ca9163d9 The framework probably could not evaluate the expression with the new syntax.
– Nkosi
Nov 13 '18 at 0:22
add a comment |
Try using the more verbose approach instead of the LINQ to Mocks
private readonly IEnumerable<Item> stubList = new List<Item> { new Item { } };
//...
var expected = (stubList, 1);
var mock = new Mock<IRepository>();
mock
.Setup(_ => _.GetItems(50))
.ReturnsAsync(expected);
IRepository mockRepository = mock.Object;
//...
The framework may be having issues trying to evaluate the expression with the new syntax
msbuild working now. Thanks. Why Linq to Mock failed on msbuild though?
– ca9163d9
Nov 13 '18 at 0:19
@ca9163d9 The framework probably could not evaluate the expression with the new syntax.
– Nkosi
Nov 13 '18 at 0:22
add a comment |
Try using the more verbose approach instead of the LINQ to Mocks
private readonly IEnumerable<Item> stubList = new List<Item> { new Item { } };
//...
var expected = (stubList, 1);
var mock = new Mock<IRepository>();
mock
.Setup(_ => _.GetItems(50))
.ReturnsAsync(expected);
IRepository mockRepository = mock.Object;
//...
The framework may be having issues trying to evaluate the expression with the new syntax
Try using the more verbose approach instead of the LINQ to Mocks
private readonly IEnumerable<Item> stubList = new List<Item> { new Item { } };
//...
var expected = (stubList, 1);
var mock = new Mock<IRepository>();
mock
.Setup(_ => _.GetItems(50))
.ReturnsAsync(expected);
IRepository mockRepository = mock.Object;
//...
The framework may be having issues trying to evaluate the expression with the new syntax
edited Nov 13 '18 at 0:23
answered Nov 13 '18 at 0:07
Nkosi
110k16118185
110k16118185
msbuild working now. Thanks. Why Linq to Mock failed on msbuild though?
– ca9163d9
Nov 13 '18 at 0:19
@ca9163d9 The framework probably could not evaluate the expression with the new syntax.
– Nkosi
Nov 13 '18 at 0:22
add a comment |
msbuild working now. Thanks. Why Linq to Mock failed on msbuild though?
– ca9163d9
Nov 13 '18 at 0:19
@ca9163d9 The framework probably could not evaluate the expression with the new syntax.
– Nkosi
Nov 13 '18 at 0:22
msbuild working now. Thanks. Why Linq to Mock failed on msbuild though?
– ca9163d9
Nov 13 '18 at 0:19
msbuild working now. Thanks. Why Linq to Mock failed on msbuild though?
– ca9163d9
Nov 13 '18 at 0:19
@ca9163d9 The framework probably could not evaluate the expression with the new syntax.
– Nkosi
Nov 13 '18 at 0:22
@ca9163d9 The framework probably could not evaluate the expression with the new syntax.
– Nkosi
Nov 13 '18 at 0:22
add a comment |
When I try your code:
class Program
{
static void Main(string args)
{
var stubList = new List<Item>
{
new Item()
};
var m = (stubList, 1);
var mockRepository = Mock.Of<IRepository>(r => r.GetItems(50) == Task.FromResult(m));
}
}
interface IRepository
{
Task<(IEnumerable<Item>, int)> GetItems(int total);
}
class Item
{
}
I'm getting different compiler error:
CS0019 Operator '==' cannot be applied to operands of type 'Task<(IEnumerable, int)>' and 'Task<(List stubList, int)>'
This happens because you compare Task<(List<Item>, int)>
and Task<(IEnumerable<Item>, int)>
. Task<T>
is not co-variant (opposite to List<T>
for instance) so the error is expected.
But why your question contains different compiler error?
If I change the code to this:
var m = ((IEnumerable<Item>)stubList, 1);
or this:
(IEnumerable<Item>, int) m = (stubList, 1);
then it complies fine.
ThestubList
in my code is defined as a field with the type ofIEnumerable<Item>
.
– ca9163d9
Nov 13 '18 at 2:25
@ca9163d9: Oh, right, I see. Then it's not an issue, I cannot reproduce it.
– abatishchev
Nov 13 '18 at 18:01
add a comment |
When I try your code:
class Program
{
static void Main(string args)
{
var stubList = new List<Item>
{
new Item()
};
var m = (stubList, 1);
var mockRepository = Mock.Of<IRepository>(r => r.GetItems(50) == Task.FromResult(m));
}
}
interface IRepository
{
Task<(IEnumerable<Item>, int)> GetItems(int total);
}
class Item
{
}
I'm getting different compiler error:
CS0019 Operator '==' cannot be applied to operands of type 'Task<(IEnumerable, int)>' and 'Task<(List stubList, int)>'
This happens because you compare Task<(List<Item>, int)>
and Task<(IEnumerable<Item>, int)>
. Task<T>
is not co-variant (opposite to List<T>
for instance) so the error is expected.
But why your question contains different compiler error?
If I change the code to this:
var m = ((IEnumerable<Item>)stubList, 1);
or this:
(IEnumerable<Item>, int) m = (stubList, 1);
then it complies fine.
ThestubList
in my code is defined as a field with the type ofIEnumerable<Item>
.
– ca9163d9
Nov 13 '18 at 2:25
@ca9163d9: Oh, right, I see. Then it's not an issue, I cannot reproduce it.
– abatishchev
Nov 13 '18 at 18:01
add a comment |
When I try your code:
class Program
{
static void Main(string args)
{
var stubList = new List<Item>
{
new Item()
};
var m = (stubList, 1);
var mockRepository = Mock.Of<IRepository>(r => r.GetItems(50) == Task.FromResult(m));
}
}
interface IRepository
{
Task<(IEnumerable<Item>, int)> GetItems(int total);
}
class Item
{
}
I'm getting different compiler error:
CS0019 Operator '==' cannot be applied to operands of type 'Task<(IEnumerable, int)>' and 'Task<(List stubList, int)>'
This happens because you compare Task<(List<Item>, int)>
and Task<(IEnumerable<Item>, int)>
. Task<T>
is not co-variant (opposite to List<T>
for instance) so the error is expected.
But why your question contains different compiler error?
If I change the code to this:
var m = ((IEnumerable<Item>)stubList, 1);
or this:
(IEnumerable<Item>, int) m = (stubList, 1);
then it complies fine.
When I try your code:
class Program
{
static void Main(string args)
{
var stubList = new List<Item>
{
new Item()
};
var m = (stubList, 1);
var mockRepository = Mock.Of<IRepository>(r => r.GetItems(50) == Task.FromResult(m));
}
}
interface IRepository
{
Task<(IEnumerable<Item>, int)> GetItems(int total);
}
class Item
{
}
I'm getting different compiler error:
CS0019 Operator '==' cannot be applied to operands of type 'Task<(IEnumerable, int)>' and 'Task<(List stubList, int)>'
This happens because you compare Task<(List<Item>, int)>
and Task<(IEnumerable<Item>, int)>
. Task<T>
is not co-variant (opposite to List<T>
for instance) so the error is expected.
But why your question contains different compiler error?
If I change the code to this:
var m = ((IEnumerable<Item>)stubList, 1);
or this:
(IEnumerable<Item>, int) m = (stubList, 1);
then it complies fine.
answered Nov 13 '18 at 2:14
abatishchev
69k69261392
69k69261392
ThestubList
in my code is defined as a field with the type ofIEnumerable<Item>
.
– ca9163d9
Nov 13 '18 at 2:25
@ca9163d9: Oh, right, I see. Then it's not an issue, I cannot reproduce it.
– abatishchev
Nov 13 '18 at 18:01
add a comment |
ThestubList
in my code is defined as a field with the type ofIEnumerable<Item>
.
– ca9163d9
Nov 13 '18 at 2:25
@ca9163d9: Oh, right, I see. Then it's not an issue, I cannot reproduce it.
– abatishchev
Nov 13 '18 at 18:01
The
stubList
in my code is defined as a field with the type of IEnumerable<Item>
.– ca9163d9
Nov 13 '18 at 2:25
The
stubList
in my code is defined as a field with the type of IEnumerable<Item>
.– ca9163d9
Nov 13 '18 at 2:25
@ca9163d9: Oh, right, I see. Then it's not an issue, I cannot reproduce it.
– abatishchev
Nov 13 '18 at 18:01
@ca9163d9: Oh, right, I see. Then it's not an issue, I cannot reproduce it.
– abatishchev
Nov 13 '18 at 18:01
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53271844%2foperator-cannot-be-applied-to-operands-of-type-taskienumerableitem-in%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
You cannot compare
Task<(IEnumerable<Item>, int)>
andTask<IEnumerable<Item>>
. The former is a task of enumerable of tuple of Item and int, the latter is a task of enumerable of Item. You see?– abatishchev
Nov 13 '18 at 0:46
This is not the issue. The code doesn't compare with different type. The error message is a little bit confused
– ca9163d9
Nov 13 '18 at 0:49