Jon*_*Jon 5 .net c# tdd unit-testing
我有一个与此类似的方法:
public List<MyClass> DoSomething(string Name, string Address, string Email, ref string ErrorMessage)
{
//Check for empty string parameters etc now go and get some data
List<MyClass> Data = GetData(Name, Address, Email);
/*************************************************************
//How do I unit test that the data variable might be empty???
*************************************************************/
List<MyClass> FormattedData = FormatData(Data);
return FormattedData;
}
Run Code Online (Sandbox Code Playgroud)
我刚刚学习 TDD/单元测试。我的问题是,如何编写测试以确保如果 GetData 返回空列表,我将 ErrorMessage 设置为某项,然后返回空列表?
开发时,您应该为测试留下一个“入口点”,如下所示:
public List<MyClass> DoSomething(string Name, string Address,
string Email, ref string ErrorMessage, IDataProvider provider)
{
//Check for empty string parameters etc now go and get some data
List<MyClass> Data = provider.GetData(Name, Address, Email);
List<MyClass> FormattedData = FormatData(Data);
return FormattedData;
}
Run Code Online (Sandbox Code Playgroud)
在单元测试中你mock应该IDataProvider
这称为依赖注入(DI) 或控制反转(IOC)
该列表取自此处
[Test]
public void When_user_forgot_password_should_save_user()
{
// Arrange
var errorMessage = string.Empty;
var dataProvider = MockRepository.GenerateStub<IDataProvider>();
dataProvider.Stub(x => x.GetData("x", "y", "z", ref errorMessage )).Return(null);
// Act
var result DoSomething("x","y","z", ref errorMessage, dataProvider);
// Assert
//...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22614 次 |
| 最近记录: |