1
我正在尝试使用xUnit和Moq编写一些测试,而且我似乎无法包装我的头如何测试提供给方法的参数已被更改该方法本身。测试方法的参数已更改
这是我有:
[Fact]
public void WhenCreateAsyncCalledSomePropertyIsSet()
{
// Arrange
var mockSomeService = new Mock<ISomeService>();
var someObject = new SomeObject();
// Act
mockSomeService.Setup(x => x.CreateAsync(someObject)).Callback(() => {
someObject.SomeProperty = "SomeValue";
});
// Assert
Assert.NotNull(someObject.SomeProperty);
}
基本上我试图做的是确保当CreateAsync(someObject)
被称为它设置someObject
参数的SomeProperty
财产。我的测试失败..
UPDATE:
我试图测试方法如下:
public class SomeService : ISomeService
{
private readonly SomeContext _context;
public SomeService(SomeContext context)
{
_context = context;
}
public async Task CreateAsync(SomeObject someObject)
{
someObject.SomeProperty = GenerateRandomString();
_context.SomeObjects.Add(project);
await _context.SaveChangesAsync();
}
}
我想测试SomeProperty
是否设置(如上面)当方法被调用。如果我忘记设置它,我想测试失败。