我正在尝试测试服务调用。
我有IAuthenticationService
拨打UpdateUserProfile
电话。 IAuthenticationService
位于IoC中(我的情况为StructureMap
)。
MustHaveHappened
正在返回0
次调用,但我知道这是在调试时发生的。
[TestMethod]
public void It_should_call_the_UpdateUserProfile()
{
// initialize in the base class, here for brevity
ObjectFactory.Initialize(registry =>
{
registry.For<IAuthenticationService>().Use(A.Fake<IAuthenticationService>());
});
UserProfile profileSend = new UserProfile
{
UserName = this.HttpContextBaseFake.User.Identity.Name,
CultureSelection = expectedCultureInfoString
};
Utils.UpdateProfile(profileSend);
IAuthenticationService service = ObjectFactory.GetInstance<IAuthenticationService>();
UserProfile profileExpect = new UserProfile
{
UserName = this.HttpContextBaseFake.User.Identity.Name,
CultureSelection = expectedCultureInfoString
};
// this is returning 0 calls
// I've also tried sending in the profileExpect instead of A.Dummy<UserProfile>
// it would be nice to test for the name and string was sent
A.CallTo(() => service.UpdateUserProfile(A.Dummy<UserProfile>())).MustHaveHappened();
}
// using static class for a reason, the code in my project has more in it
public static class Utils
{
public static void UpdateProfile(UserProfile profile)
{
// user profile is more easily available, use that for the unique identifier
IAuthenticationService service = ObjectFactory.GetInstance<IAuthenticationService>();
UserProfile userProfile = new UserProfile
{
UserName = userProfileName,
CultureSelection = cultureInfoString
};
service.UpdateUserProfile(userProfile);
}
}
答案 0 :(得分:1)
我需要在A.CallTo中使用A.Ignored而不是A.Dummy()。(。
所以它变成了:
A.CallTo(() => service.UpdateUserProfile(A<UserProfile>.Ignored)).MustHaveHappened();